在gdb中使用剥离的符号调用模糊函数

问题描述

我正在尝试用

调用函数
(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 (将#修改为@)