是否有任何方法可以找到文件/ shared_object,其中链接发生在当前文件/模块中使用的外部变量。
例如:在linux中的大型应用程序软件中,我想找到一个特定变量的声明,我已经在我的模块中进行了...
提前致谢。
答案 0 :(得分:2)
我不完全清楚你的问题,但也许dladdr应该适合你的需要。 dladdr
是Gnu / Glibc扩展。从其手册:
函数dladdr()
接受一个函数指针并尝试解析它所在的名称和文件。(它很可能与指向全局变量的指针一起使用)。
然而,我对你的问题的措辞感到困惑。 “可变的声明”在可执行的ELF二进制文件或共享对象中没有意义,因为声明本质上是源代码概念,而不是目标代码概念。实际上,大多数声明(全局变量)都在一些头文件中。
如果你有应用程序的源代码,你可以使用文本工具(如grep
或etags
),甚至可以通过插件或MELT扩展来扩展GCC编译器来查找声明。
当然,您也可以使用dlsym
查找某个符号的地址,并给出其名称。