如何在gdb中检查与其类型名称相同的变量?

6

我正在使用gdb 7.4调试一个现有的C库
我尝试检查一个变量,不幸的是,它的声明与其类型相同:

extern const enum rtx_class rtx_class[NUM_RTX_CODE];

现在我只是找不到一种方法来检查这个变量。p rtx_class返回尝试将类型名称用作表达式p &rtx_classp rtx_class[0]也是如此。
然而,info var rtx_class可以正常工作,并按预期返回const rtx_class rtx_class [145]。
有什么想法吗?

1
对于枚举类型(gdb 7.4),这对我来说还好,但对于结构体来说,这个问题已经存在很长时间了:http://sourceware.org/bugzilla/show_bug.cgi?id=7737 - dbrank0
1个回答

6

尝试这个解决方案。 对于您的二进制文件,请执行以下操作:

使用命令“nm your-executable |grep rtx_class”

您应该获得地址(假设它是0xabcdef),假设这是全局变量。然后在gdb中执行以下操作:

执行命令 “print *(rtx_class*)(0xabcdef+sizeof(rtx_class)*n)”

这将打印rtx_class [n]。 或者至少在我的简单测试中是这样的。


不幸的是,现代发行版启用了ASLR,因此这不再有帮助... - yugr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接