2016-05-30 50 views
3

我正在从QEMU获取简单的跟踪文件。 我跟着指令文档/ tracing.txtQEMU简单的后台跟踪不会打印任何信息

与此命令 “的qemu系统-x86_64的-m 2G -trace事件=/TMP /事件../qemu/test.img”

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

  1. 与 '简单' 跟踪后台生成:

    的./configure --enable-跟踪后端=简单 使

  2. 创建要跟踪的事件文件:

    回波bdrv_aio_readv>的/ tmp /事件 回波bdrv_aio_writev >>/TMP /事件

  3. 运行虚拟机,以产生一个跟踪文件:

    QEMU -trace事件=的/ tmp /事件...#你的正常QEMU调用

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

    。 /scripts/simpletrace.py跟踪事件跟踪*#用QEMU覆盖*

我遵循这个指示。 请有人给我一些建议这种情况。

谢谢!

+0

任何解决方案...我有同样的确切问题。 – Haswell

+0

@哈斯韦尔做你们中的任何人,搞清楚为什么没有印刷品? – Mellkor

+0

@Melkor对不起,我没有跟踪简单的跟踪方法,我用ftrace代替它,它很好地满足了我的目的和时间戳。 – Haswell

回答

0

我通过遵循相同的文档得到同样的问题。 https://fossies.org/linux/qemu/docs/tracing.txt 什么都没有,因为 bdrv_aio_readv和bdrv_aio_writev在默认情况下未启用,至少我所遵循的版本未启用。您需要在源目录下打开跟踪事件,查找一些没有禁用的行,例如我使用: 回声 “LOAD_FILE”>/tmp目录/事件 然后启动QEMU, 做客启动后,我运行 ./scripts/simpletrace.py跟踪事件追踪-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标准输入输出到QEMU命令行,它启动后,你可以在qemu的CLI以下命令:

(QEMU)信息跟踪事件

load_file : state 1 
vm_state_notify : state 1 
balloon_event : state 0 
cpu_out : state 0 
cpu_in : state 0 

1装置E nabled事件。

0

修改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