如何访问当前调试实例中的 cpu 寄存器?例如,您可以从 gdb 调用 printf "0x%x", $eax
和 set $eax_b = $eax
还有一种方法可以通过 gdb 提供的 python 支持来做到这一点吗?或者我应该创建一个可以像 save-reg "eax" $eax
这样调用的 python 函数吗?他手上的哪一个将寄存器存储在我希望存储它们的数组中?
另一方面,使用 gdb 脚本你也可以 set $eax = 1000
例如,我还想从 python 脚本而不是 gdb 脚本中执行此操作。
最佳答案
我不相信 GDB 的 Python API 提供对寄存器的直接访问,但是根据你想用它做什么,你可以通过评估带有 gdb.execute()
的 gdb 命令来访问它,或者用 "$eax"
计算 gdb.parse_and_eval()
表达式:
(gdb) p $rbx
$23 = 140737488348072
(gdb) python print type(gdb.parse_and_eval("$rbx")), gdb.parse_and_eval("$rbx")
<type 'gdb.Value'> 140737488348072
(此示例是在 gdb 提示符下,但 gdb
模块与在 GDB 中执行的其他代码没有任何不同。)
关于python - 我如何在 gdb 中使用 python 访问寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6103887/