2011-12-28 10 views
1

私はPythonスクリプトをGDBに入力したいが、このスクリプトは新しいコマンドを作成するために使用され、その名前は 'fp'と仮定され、その関数は与えられたメモリ領域ポインタがこのメモリ領域に存在する場合、この領域は、プログラムであるポインタが含まれているかどうかを確認するために、コマンドは、ポインタのアドレスを印刷し、ポインタが指すアドレスを出力しますGDBは与えられたメモリ領域のポインタを見つける

例:。

(gdb)fp 0x442032 100 (最初のパラメータは開始アドレス、100は検索用のサイズ)

デバッグ用プログラムの中でSと呼ばれるポインタがある場合は10

は、そのアドレスは0x442039のアドレスに0x442033とポイントなので、出力は次のようになります。

0x442033 - > 0x442039

私の質問はどのようにすることができますですポインタのアドレスを見つけるためにGDBを使用しますか?これを実現するには?ありがとう。

答えて

1

GDBビルトインのfindコマンドがあります。ドキュメントhere

デバッグプログラムにおけるSと呼ばれるポインタがある場合、そのアドレスは0x442033

あるポインタSがある場合は非整列データをロードすることは重要なを運ぶので、そのアドレスは、ほぼ確実0x442033ではありませんパフォーマンスペナルティ。

与えられたメモリ内の "any"ポインタ(findはありません)を探しているのであれば、おそらく何か間違っているでしょう:プログラムの中には、ポインタが100〜1000個あり、あなたが興味を持っている特定のポインタではなく「任意の」は、あなたがあなたのプログラムを理解していないというサインかもしれません。

+0

私たちの先生は私たちがこのようにしたいと思っています....私は混乱しています.... – user1118486

+0

ポインタが「s」などを表していても、指定したメモリ領域のポインタを探したいエリア内のすべてのポインタを見つけることは可能でしょうか?代入はこれです:pythonスクリプトを使用してgdbコマンドを作成し、与えられたメモリ領域内のすべてのポインタを識別できるようにします。 – user1118486

関連する問題