我在this page上读到,他们将为现有的模拟器(如qemu)增加执行支持。由于此页面自2012年以来一直被编辑,我想知道当前版本的qemu是否支持此功能。如果是这样,如何使用它?
答案 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监视器stop
,registers
,{{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的模式。