我经常发现,当我调试程序并获取我遇到的任何正确对齐,指针尺寸的值的符号时,堆叠堆栈很有用。 我已经厌倦了手动执行此操作,因此我尝试写一个为我做的命令。 问题在于,当通过指针解码设置其参数时,“信息符号”似乎不喜欢使用便利变量作为其参数。即:
(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)
为什么? 这是一个错误吗? 有其他方法可以做到吗?
thanks!-luc
PS:使用香草GDB7.5
列表中的任期:
这很可能是一个错误。
这是GDB7.5