【发布时间】:2013-03-14 14:12:57
【问题描述】:
我正在尝试通过其在内存中的地址来获取符号名称。我使用来自dlfcn.h 的int dladdr(void *addr, Dl_info *info) 函数来获取信息:
但此函数找不到与地址匹配的符号,并将 dli_sname 和 saddr 设置为 NULL。
在这种情况下,如何获取符号名称或有关符号的任何其他信息(种类、属性等)?
注意:我要查找的符号名称是_ZTv0_n24_N4QGst13PropertyProbeD0Ev。它被g++ -fdump-class-hierarchy 列在QGst::PropertyProbe 类的vtable 中:
但是dladdr 并没有通过它的地址找到它,当我通过符号dlopen 和dlsym 的符号_ZTVN4QGst13PropertyProbeE 查看共享对象并遍历虚函数指针列表时,我没有找到它。 v-table 中的所有其他函数都由dladdr 找到。
【问题讨论】:
标签: c++ linux dlopen thunk dladdr