Python 統合を使用して gdb のコマンドを作成し、変数のアドレスを取得しようとしています。私はすでに使用している値を持っています:
v = gdb.parse_and_eval("var_name")
ただしv
、タイプに応じて、さまざまな方法でシリアル化できます。たとえば、 の場合、次のchar*
ように表示されます。
>>> print v
0x7f06a2cfd320 "x"
>>> print v.address
None
わかりました、これは期待どおりに機能しません。最初に逆参照してからアドレスを取得しようとしましたが、元の値が返されます。
>>> print v.dereference().address
0x7f06a2cfd320 "x"
住所部分だけを取得するにはどうすればよいですか? これまでに見つけた唯一の方法は、少し長く見えます。
>>> vptr = gdb.lookup_type("void").pointer()
>>> print v.cast(vptr)
0x7f06a2cfd320
もっと直接的な方法はありますか?