QEMU简单的后端跟踪不会打印任何东西

问题描述 投票:3回答:2

我正在从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 make
  2. 使用要跟踪的事件创建文件: echo bdrv_aio_readv> / tmp / events echo bdrv_aio_writev >> / tmp / events
  3. 运行虚拟机以生成跟踪文件: qemu -trace events = / tmp / events ...#您正常的QEMU调用
  4. 漂亮打印二进制跟踪文件: ./scripts/simpletrace.py trace-events trace- *#覆盖*与QEMU

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

谢谢!

linux ubuntu backend trace qemu
2个回答
0
投票

我按照同样的文件得到了同样的问题。 https://fossies.org/linux/qemu/docs/tracing.txt什么都没有,因为默认情况下没有启用bdrv_aio_readv和bdrv_aio_writev,至少我启用的版本没有启用。你需要在源目录下打开trace-events,寻找一些没有禁用的行,例如:我使用:echo“load_file”> / tmp / events然后启动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
投票

修改源树中的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

© www.soinside.com 2019 - 2024. All rights reserved.