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

时间:2015-03-19 19:18:22

标签: debugging gdb reverse qemu

我在this page上读到,他们将为现有的模拟器(如qemu)增加执行支持。由于此页面自2012年以来一直被编辑,我想知道当前版本的qemu是否支持此功能。如果是这样,如何使用它?

2 个答案:

答案 0 :(得分:0)

有一些补丁,但AFAIK尚未合并: http://lists.gnu.org/archive/html/qemu-devel/2014-11/msg03947.html

在平均时间(无耻插件)中,如果它是您正在寻求调试的用户模式Linux应用程序,您可以随时尝试http://undo-software.com/

答案 1 :(得分:0)

Pavel的补丁

这是一个严重的2018补丁集https://lists.gnu.org/archive/html/qemu-devel/2018-06/msg00478.html,我发现它可能会在某些时候合并。

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

<强>的Mozilla / RR

https://github.com/mozilla/rr是UndoDB的开源替代品,在https://www.linaro.org/blog/core-dump/tricks-for-debugging-qemu-rr/提到

rr的网站明确声称它可以反向调试QEMU和大多数复杂的Linux应用程序。

当然,使用rr或UndoDB,您将直接反向行走QEMU源。

但也许在QEMU内的主CPU循环上放置断点很简单,然后以QEMU监视器stopregisters,{{1}方便地观察机器状态(内存和寄存器) }和x命令?

<强> Simuliks

http://simulics.com/index_en.php是商业解决方案,但如http://jakob.engbloms.se/archives/2452#more-2452所述,由于ISA支持和基于Java的支持,它不太可能是基于QEMU的。

Userland反向调试

这甚至会更酷,但它更不可能存在,因为我甚至没有看到简单的支持,即使是前向QEMU用户态调试:Is it possible to use gdb and qemu to debug linux user space programs and kernel space simultaneously?

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