gpt4 book ai didi

debugging - 在 GDB 中如何解决重复符号

转载 作者:行者123 更新时间:2023-12-04 21:49:57 25 4
gpt4 key购买 nike

我有一个全局变量,其名称有多个符号,我想打印所有这些符号。例子:

(gdb) info var g_reallocCount
All variables matching regular expression "g_reallocCount":

File sv.c:
long int g_reallocCount;
long int g_reallocCount;
long int g_reallocCount;
long int g_reallocCount;

当我尝试使用“print g_reallocCount”时,我只得到一个结果,这不是我需要的。

我相信我有多个符号的原因是我正在更改的静态库链接到多个加载的模块。在这个时候,我不确定我是否可以改变这个事实。

谢谢

最佳答案

编辑 :由于某种原因,我最初没有考虑更简单的方法...假设 c 链接。

(gdb) shell nm /path/to/stuff | grep g_reallocCount | cut -d' ' -f1 >>foo
(gdb) shell cat foo | awk '{print "p *0x" $0}' >foo.gdb
(gdb) source foo.gdb
$4 = 0
$5 = 0
$6 = 0

原始答案,类似的前提:
如果没有更好的主意,您可以尝试复制二进制/库并使用 strip 命令剥离调试符号,然后 gdb 将在 'info var' 中输出符号的地址
你可以用 print *0xaddr 打印它

当调试符号可用时,我会想出一个补丁来打印“info var”中变量的地址。

如果您想出一个最小的测试用例来重现此问题,请考虑将其发送到 gdb 列表,或将其附加到错误报告中。

谢谢!

关于debugging - 在 GDB 中如何解决重复符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6743220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com