我正在使用 python 集成为 gdb 创建一个命令,并尝试获取变量的地址。我已经使用了这个值:
v = gdb.parse_and_eval("var_name")
但这v
可以根据类型以多种方式序列化。例如,如果它是 a 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
有没有更直接的方法?