2012-10-17 6 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:これは、最も可能性の高いバグ

です:リストから7.5

更新バニラGDBを使用しました。

+1

おそらく 'gdb'関連のメーリングリストがもっと良い場所になるかもしれません。 –

+0

フォローアップ:freebsd-questionsのgdbに相当するものが見つからなかったので、この質問を一般的なgdbリストに投稿しましたが、まだ回答を得ていません。私がしたら、私は質問を更新します。 – shroudednight

+0

これは、 'GNU gdb(GDB)7.3.50.20111117-cvs-debian'でうまくいくようです – Jester

答えて

1

バグかどうかは、pとxコマンドで/ aフォーマット指定子を使用することをお勧めします。これは常に私のために働く、入力することも速いです。

関連する問題