问题描述
我正在尝试用
调用函数(gdb) call fun()
在第三方库libFoo
中,该库以带剥离符号的已编译形式出现。
(gdb) info function ^fun$
Non-debugging symbols:
0x00007ffff6d7e3b0 fun
问题是,加载了一个不相关的系统库libBar
,其中也包含fun
,这是一个变量,并且gdb更喜欢该符号而不是所需的符号。我怀疑这是因为此匹配项是非剥离式调试符号。
(gdb) info var ^fun$
File ../bar/baz.c:
256: static const int fun[18];
(gdb) info symbol fun
fun in section .rodata of libBar.so
问题是,如何区分符号并指示gdb使用libFoo
中的一个?
到目前为止,我发现的唯一方法是先进行手动操作(上面的info function ^fun$
),然后再进行call (void)0x00007ffff6d7e3b0()
。这不太好,因为它不允许我跨不同的程序运行编写调用脚本。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)