我正在使用QEMU为个人项目测试某些软件,我想知道程序何时写入内存。我提出的最佳解决方案是在负责写入内存的文件中手动添加print语句。如果我是正确的,这将需要重建文件的对象和构建QEMU。但我遇到了QMP,它使用JSON命令来操作QEMU,QEMU有一整套命令,可在此处找到:https://raw.githubusercontent.com/Xilinx/qemu/master/qmp-commands.hx。
但看了之后我并没有真正看到任何可以做我想要的东西。我是一个新的程序员,并不是那么先进。并且想知道是否有人知道如何更好地解决这个问题。
答案 0 :(得分:1)
历史上,QEMU中没有任何支持跟踪所有访客内存访问,因为在QEMU中没有任何一个地方可以轻松添加print语句来跟踪它们。这是因为更多的访客内存访问通过“快速路径”,我们直接生成本机主机指令,在数据结构(QEMU的TLB)中查找主机RAM地址并执行加载或存储。只有当这条快速路径在TLB中没有找到命中时,我们才会回到用C语言编写的慢速路径。
最近的trace-events事件'tcg guest_mem_before'可用于跟踪虚拟内存访问,但请注意它不会告诉您:
您还需要重建QEMU才能启用它(与大多数跟踪事件不同,默认情况下会编译到QEMU中,并且可以在运行时启用。)
答案 1 :(得分:1)
最近(2016年6月9日),主线QEMU增加了强大的跟踪功能。 请参阅 qemu / docs / tracing.txt 文件作为手册。
可以跟踪很多事件,请参阅 qemu / trace_events 文件列表。
我可以理解代码,“guest_mem_before”事件是您需要查看访客内存写入。
<强>详细信息:强> 在以下功能中放置了跟踪钩子: