2012-10-17 30 views
7

我經常發現在調試程序時獲取符號以獲取我遇到的任何正確對齊的指針大小值的符號時很有用。我已經厭倦了這樣做,所以我試着寫一個命令,爲我做。問題是,當通過指針解引用設置參數時,「info symbol」似乎不喜歡使用便利變量作爲其參數。 IE:獲取GDB便利變量中保存的值的符號信息

(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) 

這是爲什麼?這是一個錯誤?有沒有不同的方式來做到這一點?

謝謝!

呂克

PS:使用香草GDB從列表7.5

更新:

這很可能是一個錯誤。

+1

也許'gdb'相關的郵件列表可能是一個更好的地方問。 –

+0

跟進:沒有找到相當於freebsd-questions的gdb,我確實將這個問題發佈到了一般的gdb列表,並且還沒有得到響應。如果我這樣做,我會更新這個問題。 – shroudednight

+0

爲了記錄,這似乎在'GNU gdb(GDB)7.3.50.20111117-cvs-debian' – Jester

回答

1

錯誤與否,我推薦使用帶p和x命令的/ a格式說明符。這對我來說總是有效,而且打字速度也更快。