代码之家  ›  专栏  ›  技术社区  ›  zapredelom

dladdr能够从静态成员获取信息吗?

  •  0
  • zapredelom  · 技术社区  · 10 年前

    在一些图书馆的研究中,我发现了这种代码

    Dl_info info = {
       NULL,
       NULL,
       NULL,
       NULL
    };
    
    if (!dladdr((void*) dirSep, &info)) {
       return libPath.c_str();
    }
    

    哪里 dirSep static const char* 该代码所在的类中的成员(在come成员函数中),所以我的问题是:是否有任何地方记录了 dladdr 函数能够获取信息表单 static const member 领域

    1 回复  |  直到 10 年前
        1
  •  1
  •   David Schwartz    10 年前

    否,以及 dladdr 无法承诺或保证。它只能查看模块中的符号表。如果符号表包含该符号,则可以将其提供给您。如果不是,则不是。符号表中的符号取决于模块的编译方式、链接方式以及是否剥离。

    一般来说,如果代码可以链接到它,那么 数据地址 应该找到它。