GDB,检查指针指针

时间:2011-11-22 21:26:37

标签: c gdb

好的,所以我正在尝试学习gdb。我知道大部分基础知识,但我还没弄清楚如何检查oneliner中指针的指针。可能通过定义宏/命令,但我无法这样做。

这个问题在学习cdecl调用约定时开始,其中$ esp包含指向字符串的指针,作为参数传递给函数。为了解决这个问题,我必须做以下事情:

gdb$ x $esp+0x08
0xbffff6a4: 0x980eb192
gdb$ x/s 0x980eb192
0x980eb192:  "Hello world"

所以,问题是。这可以通过更简单的方式完成吗?切割和粘贴感觉太慢了。

欣赏任何提示/想法!

2 个答案:

答案 0 :(得分:3)

(gdb) x/s *(char**)($esp+8)可能会做到这一点。

答案 1 :(得分:1)

您可以在后续表达式中重复使用print的结果:

(gdb) p *(void **)($esp + 4)
$4 = (void *) 0x80aec48
(gdb) x/s $4
0x80aec48:   "alabala"