获取GDB便利变量中保存的值的符号信息

shr*_*ght 7 c c++ debugging gdb

我经常发现在调试程序时使用堆栈是很有用的,并且我会遇到任何正确对齐的,指针大小的值的符号.我已经厌倦了手动执行此操作,因此我尝试编写一个命令来为我完成此操作.问题是"信息符号"似乎不喜欢在通过指针取消引用设置其参数时使用便利变量作为其参数.IE:

(gdb) info symbol 0xb6ca4d28
[Useful Symbol Information]
(gdb) set $pointer = $esp
(gdb) while ( *(int*)$pointer != 0xb6ca4d28)
 >set $pointer += 4
 >end
(gdb) x/x $pointer
0x6ebee064:     0xb6ca4d28
(gdb) set $dereferencePointer = *(int *)$pointer
(gdb) p/x $dereferencePointer
$103 = 0xb6ca4d28
(gdb) info symbol $dereferencePointer
No symbol matches $dereferencePointer.
(gdb) set $dereferencePointer = 0xb6ca4d28
(gdb) p/x $dereferencePointer
$104 = 0xb6ca4d28
(gdb) info symbol $dereferencePointer
[Useful symbol information]
(gdb)
Run Code Online (Sandbox Code Playgroud)

为什么是这样?这是一个错误吗?有没有不同的方法来做到这一点?

谢谢!

吕克

PS:使用vanilla GDB 7.5

从列表更新:

这很可能是一个错误.

Ale*_*ler 1

无论是否有错误,我建议将 /a 格式说明符与 p 和 x 命令一起使用。这对我来说总是有效,而且打字速度也更快。