You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QEMU RISC-V64执行追踪问题咨询:命令与虚拟化疑问

QEMU RISC-V 程序追踪问题解答

1. 当前命令是否正确?正确命令是什么?

当前命令不正确,原因是你使用了全系统模拟器qemu-system-riscv64,它默认会启动OpenSBI固件、甚至加载内核,追踪范围包含这些系统组件的所有指令,导致追踪文件持续膨胀至GB级。

仅获取目标二进制执行追踪的正确方案,是使用用户态模拟器qemu-riscv64——它直接运行用户空间程序,不会涉及系统固件/内核的指令追踪,命令如下:

qemu-riscv64 -singlestep -d nochain,cpu -D "$trace" "${binary}"

如果必须依赖全系统环境,需要额外配置限制追踪范围,但用户态模拟器是更简单高效的选择。

2. 如何在QEMU窗口内运行Hello World程序?

qemu-system-riscv64是全系统模拟器,不会直接执行你传入的二进制文件,它需要完整的系统环境(内核、根文件系统)才能启动。要在它的窗口里运行程序,步骤如下:

  • 准备包含Hello World二进制的根文件系统镜像(如ext4格式)
  • 准备适配RISC-V架构的Linux内核镜像
  • 启动QEMU时指定系统组件:
    qemu-system-riscv64 -machine virt -kernel linux-riscv64.bin -drive file=rootfs.ext4,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -append "root=/dev/vda console=ttyS0" -serial stdio
    
  • 系统启动后,在弹出的终端中输入Hello World程序的路径(如./hello)即可运行。

若无需全系统环境,直接用用户态模拟器qemu-riscv64运行即可,不需要窗口,程序会直接在终端输出结果。

3. 关于全系统虚拟化的假设是否错误?

你的假设错误,当前命令使用的qemu-system-riscv64正是全系统虚拟化工具,它会模拟完整的RISC-V计算机系统(包括CPU、内存、外设、固件、内核),因此会追踪所有系统层面的指令,导致追踪文件过大。

如果仅需追踪目标用户程序,完全不需要全虚拟化,使用用户态模拟器qemu-riscv64就足够——它只运行目标二进制,追踪范围仅限用户程序的指令,不会产生无关的海量追踪数据。

内容的提问来源于stack exchange,提问作者shravan.sukumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 10:27:22