2011-11-22 190 views
2

好的,所以我想學習gdb。我知道大部分基礎知識,但是我一直無法弄清楚如何檢查指向指向指針的指針。通過定義宏/命令可能是可能的,但我還沒有做到。GDB,檢查指針指針

這個問題在學習cdecl調用約定時開始,其中$ esp包含一個指向字符串的指針,作爲參數傳遞給函數。爲了搞清楚,我必須做到以下幾點:

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

所以,問題是。這可以以更簡單的方式完成嗎?切割和粘貼只是感覺太慢。

欣賞任何提示/想法!

回答

3

(gdb) x/s *(char**)($esp+8)可能會訣竅。

+0

這做到了!把它包裝在一個命令中,完美地工作。 – lode

1

可以在後續的表達式重用print結果:

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