好的,所以我正在尝试学习gdb。我知道大部分基础知识,但我还没弄清楚如何检查oneliner中指针的指针。可能通过定义宏/命令,但我无法这样做。
这个问题在学习cdecl调用约定时开始,其中$ esp包含指向字符串的指针,作为参数传递给函数。为了解决这个问题,我必须做以下事情:
gdb$ x $esp+0x08
0xbffff6a4: 0x980eb192
gdb$ x/s 0x980eb192
0x980eb192: "Hello world"
所以,问题是。这可以通过更简单的方式完成吗?切割和粘贴感觉太慢了。
欣赏任何提示/想法!
答案 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"