我正在从QEMU获取简单的跟踪文件。 我按照说明docs / tracing.txt
使用此命令" qemu-system-x86_64 -m 2G -trace events = / tmp / events ../qemu/test.img"
我想获得简单的跟踪文件。 我有trace-pid文件,但是它没有任何内容。
使用'简单'构建跟踪后端:
./ configure --enable-trace-backends = simple 使
使用您要跟踪的事件创建一个文件:
echo bdrv_aio_readv>的/ tmp /事件 echo bdrv_aio_writev>>的/ tmp /事件
运行虚拟机以生成跟踪文件:
qemu -trace events = / tmp / events ...#您正常的QEMU调用
漂亮打印二进制跟踪文件:
./ scripts / simpletrace.py trace-events trace- * #Override * with QEMU
我按照这个说明操作。 请有人就这种情况给我一些建议。
谢谢!
答案 0 :(得分:0)
通过遵循相同的文档,我遇到了同样的问题。 https://fossies.org/linux/qemu/docs/tracing.txt 什么都没有因为 默认情况下未启用bdrv_aio_readv和bdrv_aio_writev,至少未启用我编译的版本。你需要在源目录下打开trace-events,寻找一些没有禁用的行,例如:我用的是: echo“load_file”>的/ tmp /事件 然后开始qemu, 客人开始后,我跑了 ./scripts/simpletrace.py trace-events trace-Pid 我得到了
load_file 1474.156 pid=5249 name=kvmvapic.bin path=qemu-2.8.0-rc0/pc-bios/kvmvapic.bin
load_file 22437.571 pid=5249 name=vgabios-stdvga.bin path=qemu-2.8.0-rc0/pc-bios/vgabios-stdvga.bin
load_file 10034.465 pid=5249 name=efi-e1000.rom
你也可以将-monitor stdio添加到qemu命令行,启动后,你可以在qemu CLI中执行以下命令:
(qemu)info trace-events
load_file : state 1
vm_state_notify : state 1
balloon_event : state 0
cpu_out : state 0
cpu_in : state 0
1表示已启用的事件。
答案 1 :(得分:-1)
修改源树中的trace-events
文件
从v2.9.0起,您还必须从要在其中启用的行中删除disable
,例如:
-disable exec_tb(void *tb, uintptr_t pc) "tb:%p pc=0x%"PRIxPTR
+exec_tb(void *tb, uintptr_t pc) "tb:%p pc=0x%"PRIxPTR
并重新编译。
这是一个最小的完全自动化的可运行示例,可以启动Linux并生成跟踪:https://github.com/cirosantilli/linux-kernel-module-cheat
例如,我使用跟踪来计算Linux有多少启动指令:https://github.com/cirosantilli/linux-kernel-module-cheat/blob/c7bbc6029af7f4fab0a23a380d1607df0b2a3701/count-boot-instructions.md
我有一个轻微修补的QEMU作为子模块,密钥提交是:https://github.com/cirosantilli/qemu/commit/e583d175e4cdfb12b4812a259e45c679743b32ad