qemu trace使用

  • 自定义

这里是模拟arm64架构

官方文档

# qemu 编译添加选项
# --enable-trace-backends 选项用于指定trace 输出方式
# simple 输出二进制,通用性强, 后面需要通过./scripts/simpletrace.py  继续解析
./configure --target-list=aarch64-softmmu,aarch64-linux-user --enable-debug \
--enable-debug-info --enable-trace-backends=simple

arm64运行

# qemu 根目录下
# 可使用 --trace "kvm_*" --trace "virtio_*" (支持通配符)
# 也可以将 追踪目标写入文件 , 然后使用  -trace events= 指定
# -trace file= 指定生成文件的位置 默认为 当前目录的 trace-[pid]./build/qemu-system-aarch64 \-cpu cortex-a57 \-m 512M \-machine type=virt \-nographic \-smp 1 \-kernel ../run-test/Image.gz  \-initrd ../run-test/rootfs.cpio.gz   \-append "rdinit=/linuxrc console=ttyAMA0" \-device virtio-scsi-device \-trace events=/tmp/events,file=virtio.log

文件解析

# usage: ./scripts/simpletrace.py [--no-header] <trace-events> <trace-file>
# 这个 trace-events 指的是追踪函数所在的文件, 比如追踪 virtio 需要启动添加相应的目标 如 virtio_*
# 解析时需要指定该函数所在的文件 比如 hw/virtio/trace-events
./scripts/simpletrace.py ./hw/virtio/trace-events  virtio.log

自定义

比如 追踪kvm退出时 添加自己定义的函数
在qemu编译时会使用 script下的脚本解析目录下trace-events 文件 , 生成相应的函数到一个 trace文件中,比如在accel/kvm/trace.h 文件包含的trace/trace-accel_kvm.h

参数类型需要是c 的原始类型

# accel/kvm/trace-events 文件中添加
kvm_exit_io(uint16_t port, void *data, int direction,int size, uint32_t count) "port %"PRIu16" , data %p , direction %d , size %d , count %"PRIu32
kvm_exit_mmio(uint64_t addr,void *buf,int len,bool is_write) "addr %0x%"PRIx64", buf %p ,len %d ,is_write %d"
int kvm_cpu_exec(CPUState *cpu) {...switch (run->exit_reason) {case KVM_EXIT_IO:DPRINTF("handle_io\n");/* Called outside BQL */trace_kvm_exit_io(run->io.port,(uint8_t *)run + run->io.data_offset,run->io.direction,run->io.size,run->io.count);kvm_handle_io(run->io.port, attrs,(uint8_t *)run + run->io.data_offset,run->io.direction,run->io.size,run->io.count);ret = 0;break;case KVM_EXIT_MMIO:DPRINTF("handle_mmio\n");trace_kvm_exit_mmio(run->mmio.phys_addr,run->mmio.data,run->mmio.len,run->mmio.is_write);address_space_rw(&address_space_memory,run->mmio.phys_addr, attrs,run->mmio.data,run->mmio.len,run->mmio.is_write);ret = 0;break;....
}

qemu trace 使用相关推荐

  1. Qemu Tracing

    Tracing - QEMU documentationhttps://qemu-project.gitlab.io/qemu/devel/tracing.html KVM Tracing, perf ...

  2. virtio-gpu

    软件环境:ubuntu20.04 aosp 硬件环境:x86 PC 目标:在host ubuntu20.04启动支持图形(by virtio-gpu)的Ubuntu20.04或Android虚拟机 1 ...

  3. linux qemu 报错 Unable to reserve 0xfffff000 bytes of virtual address space at 0x1000 解决方法

    目录 错误现象 可能原因 解决过程 解决方法 错误现象 使用 qemu-i686 运行 i686平台文件 报错 qemu-i686: Unable to reserve 0xfffff000 byte ...

  4. linux qemu 使用方法

    目录 一.QEMU的运行模式 二.QEMU在使用者模式下执行程序 三.QEMU的系统模式使用 一.QEMU的运行模式 直接摘抄自己<揭秘家用路由器0day漏洞挖掘技术>,网上查了一下也没有 ...

  5. 【翻译】QEMU内部机制:顶层概览

    系列文章: [翻译]QEMU内部机制:宏观架构和线程模型 [翻译]QEMU内部机制:vhost的架构 [翻译]QEMU内部机制:顶层概览(本文) [翻译]QEMU内部机制:内存 原文地址:http:/ ...

  6. linux block挂io,linux:在qemu中运行自编译内核:VFS:无法在未知的wn-block(0,0)上挂载root fs...

    我试着让它运转起来,不知道我做错了什么.我已经创建了一个Debian.img(原始格式的磁盘,带有虚拟设备管理器 – 我认为是libvirt)并安装了debian而没有任何麻烦.现在我想用自编译的内核 ...

  7. qemu debug linux内核,在QEMU环境中使用GDB调试Linux内核

    简介 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试.其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qem ...

  8. 欢迎使用 QEMU 的文档!| 目录

    Welcome to QEMU's documentation! - QEMU documentationhttps://qemu-project.gitlab.io/qemu/ About QEMU ...

  9. android emulator虚拟设备之qemu pipe分析(三)

    一.概述 qemu pipe也是一个虚拟设备,是一个通用的虚拟设备,用于提供guest os和emulator通信的功能,类似于一个抽象的通信层,这样就不用写很多虚拟设备了. 之前在guest os中 ...

最新文章

  1. 线性布局上的一个小错误
  2. Centos7安装tengine-2.3.2版本
  3. 如何隐藏 Safari 中 input 标签的 autofill 图标
  4. opencv1-加载、修改、保存图像
  5. gcc较高版本的一些编译警告收集
  6. .Net Core 商城微服务项目系列(一):使用IdentityServer4构建基础登录验证
  7. EJB3.0学习笔记---Stateless Session Bean的原理:
  8. 如果一个普通人想创业或是干点副业赚钱,应该去赚谁的钱?
  9. 给特定的模拟器/设备实例发送命令
  10. MODULE_DEVICE_TABLE【转】
  11. hash ruby 定义 嵌套_【译】rails的嵌套属性(Nested Attributes)使用
  12. ecshop属性排序
  13. 浪潮之巅第三章 — “水果”公司的复兴 (乔布斯和苹果公司)(全)
  14. 计算机网络原理(谢希仁第八版)第一章课后习题答案
  15. VEX到底是一种什么机器人?和乐高有什么区别?
  16. KMeans算法流程
  17. Nginx Window假死状态
  18. “Android开发3年老板嫌我工资高,把我辞了…”
  19. 小点滴——word页码页眉问题——摘自贴吧
  20. 神奇的口袋(回溯DP)

热门文章

  1. SD-WAN是面向分支机构的新兴、不断发展的解决方案
  2. 假设计算机系统采用C-SCAN,操作系统第6章习题带答案
  3. 机器人教学:人-机器人互动-理论与应用
  4. 申请德国农工大学计算机案例,德州农工大学研究生院留学申请|录取条件|学费|奖学金_Texas A And M University Graduate_天道院校库_天道教育...
  5. Java基础,读取文件中的内容写入到另外一个文件。
  6. java中使用ElasticSearch聚合查询代码实例(个人笔记,不喜勿喷)
  7. invader的java学习第二天基础篇
  8. signature=e5535ff98b93aa63c455611822dc57c2,Magnetoimpedance of metallic ferromagnetic wires
  9. VUE+Quill编辑器实现添加新闻功能
  10. 【优化求解】基于精英反向学习带扰动因子的混沌蚁狮算法(EOPCALO)求解单目标优化问题附matlab代码