Debugging 是否可以使用qemu进行反向调试?

Debugging 是否可以使用qemu进行反向调试?,debugging,gdb,reverse,qemu,Debugging,Gdb,Reverse,Qemu,我读到他们打算向现有模拟器(如qemu)添加revese执行支持。由于此页面上次编辑是在2012年,我想知道当前版本的qemu是否支持此功能。如果是,如何使用它?有一些补丁,但AFAIK尚未合并: 同时(无耻的插件),如果您希望调试的是用户模式的Linux应用程序,您可以尝试Pavel的补丁集 这是一个严重的2018补丁集,我发现它可能会在某个时候被合并 它只需在反向中断之前恢复最近的检查点即可工作。您必须手动执行检查点,但这是迈向更自动化的第一步 mozilla/rr 是UndoDB的开源替

我读到他们打算向现有模拟器(如qemu)添加revese执行支持。由于此页面上次编辑是在2012年,我想知道当前版本的qemu是否支持此功能。如果是,如何使用它?

有一些补丁,但AFAIK尚未合并:


同时(无耻的插件),如果您希望调试的是用户模式的Linux应用程序,您可以尝试Pavel的补丁集

这是一个严重的2018补丁集,我发现它可能会在某个时候被合并

它只需在反向中断之前恢复最近的检查点即可工作。您必须手动执行检查点,但这是迈向更自动化的第一步

mozilla/rr

是UndoDB的开源替代方案,在

rr的网站特别声明它可以反向调试QEMU和最复杂的Linux应用程序

当然,使用
rr
或UndoDB,您将直接反向遍历QEMU源代码

但是,在QEMU内的主CPU循环上设置断点,然后通过QEMU监视器的
stop
registers
x
xp
命令方便地观察机器状态(内存和寄存器)可能很简单

Simuliks

是一个商业解决方案,但正如在上所提到的,由于ISA支持和基于Java,它不太可能是基于QEMU的

Userland反向调试

这会更酷,但它更不可能出现,因为我看不到对QEMU用户域调试的简单支持:

一种天真的实现可能性是将QEMU置于跳过环0的模式