QEMU简单的后端跟踪,不会打印任何内容

时间:2016-05-30 09:47:33

标签: linux ubuntu backend trace qemu

我正在从QEMU获取简单的跟踪文件。 我按照说明docs / tracing.txt

使用此命令" qemu-system-x86_64 -m 2G -trace events = / tmp / events ../qemu/test.img"

我想获得简单的跟踪文件。 我有trace-pid文件,但是它没有任何内容。

  1. 使用'简单'构建跟踪后端:

    ./ configure --enable-trace-backends = simple 使

  2. 使用您要跟踪的事件创建一个文件:

    echo bdrv_aio_readv>的/ tmp /事件 echo bdrv_aio_writev>>的/ tmp /事件

  3. 运行虚拟机以生成跟踪文件:

    qemu -trace events = / tmp / events ...#您正常的QEMU调用

  4. 漂亮打印二进制跟踪文件:

    ./ scripts / simpletrace.py trace-events trace- * #Override * with QEMU

  5. 我按照这个说明操作。 请有人就这种情况给我一些建议。

    谢谢!

2 个答案:

答案 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