微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在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 举报,一经查实,本站将立刻删除。