qemu 单元测试一

qemu使用glib的test框架对io, cpu等进行单元测试。测试用例放在tests目录下。 测试的项目包括: qobject模型测试用例;qemu的基本函数实现;主机实现的函数等; qapi相关的测试用例; qmp测试用例; 架构有关的测试用例;外设测试用例等等。

以arm为例测试用例的使用方法:

1.编译qemu

./configure --target-list=arm-softmmu && make 

2. 运行测试用例:

make check

执行结果(qemu 1.5.0):

alloc@alloc-Rev-1-0:~/qemu$ make check
CHK version_gen.h
GTESTER tests/check-qdict
GTESTER tests/check-qfloat
GTESTER tests/check-qint
GTESTER tests/check-qstring
GTESTER tests/check-qlist
GTESTER tests/check-qjson
GTESTER tests/test-qmp-output-visitor
GTESTER tests/test-qmp-input-visitor
GTESTER tests/test-qmp-input-strict
GTESTER tests/test-qmp-commands
GTESTER tests/test-string-input-visitor
GTESTER tests/test-string-output-visitor
GTESTER tests/test-coroutine
GTESTER tests/test-visitor-serialization
GTESTER tests/test-iov
GTESTER tests/test-aio
GTESTER tests/test-thread-pool
GTESTER tests/test-hbitmap
GTESTER tests/test-x86-cpuid
GTESTER tests/test-xbzrle
GTESTER tests/test-cutils
GTESTER tests/test-mul64GTESTER check-qtest-arm


### QEMU 启动测试器的使用指南 QEMU 提供了种强大的虚拟化环境,可以模拟各种硬件平台并运行相应的操作系统或应用程序。为了启动和管理测试器,通常需要结合特定的目标架构以及调试工具来完成。 #### 1. 安装 QEMU 在 macOS 上可以通过图形界面工具 **QEMU Manager** 来简化安装过程[^1]。对于其他操作系统,则可以直接通过包管理器或者编译源码的方式安装 QEMU。例如,在 Linux 系统中: ```bash sudo apt update && sudo apt install qemu-system-arm ``` 如果目标是针对 ARM 架构进行开发,推荐使用由 Liviu Ionescu 维护的 **QEMU Arm xPack** 版本[^2]。该版本提供了更便捷的安装方式,并且内置了 Semihosting 和 ITM 支持,适合嵌入式开发场景。 --- #### 2. 配置 QEMU 测试环境 要启动个测试程序,首先需准备对应的镜像文件(如根文件系统、内核映像等)。以下是基本命令模板: ```bash qemu-system-arm \ -machine versatilepb \ -cpu cortex-a9 \ -kernel /path/to/zImage \ -initrd /path/to/initramfs.cpio.gz \ -append "root=/dev/ram rdinit=/sbin/init" \ -nographic ``` - `-machine` 参数指定仿真机型。 - `-cpu` 设置 CPU 类型。 - `-kernel` 加载内核映像。 - `-initrd` 指定初始 RAM 文件系统。 - `-append` 添加引导参数。 - `-nographic` 关闭图形输出,仅保留串口日志。 当测试的是用户空间应用而非整个操作系统时,可直接加载 ELF 可执行文件作为入口点。例如: ```bash qemu-arm ./test & ps -ef | grep -v grep | grep "test" ``` 此脚本会将 `./test` 应用置于后台运行,并确认其进程是否存在[^3]。 --- #### 3. 调试与监控 为了让开发者更好地分析程序行为,建议开启以下功能: - **启用调试模式**:重新编译 QEMU 并加入 `--enable-debug` 标记[^4]。 - **记录日志信息**:利用 `-d` 参数收集未实现指令或其他异常事件的数据流。例如: ```bash qemu-system-arm ... -d unimp,guest,exec -D debug.log ``` 这将在当前目录下生成名为 `debug.log` 的跟踪文件。 另外还可以借助 GDB 工具远程连接到正在运行中的实例来进行单步调试操作: ```bash qemu-system-arm ... -s -S & gdb-multiarch target remote :1234 ``` 其中 `-s` 表示监听端口号,默认为 1234;而 `-S` 则暂停执行直到收到继续信号为止。 --- #### 4. 单元测试框架集成 对于希望自动化验证代码质量的情况来说,构建套完善的 CI/CD 管道显得尤为重要。Xpack 中已经包含了部分预定义好的 Makefile 规则用于驱动此类任务——只需简单调用即可触发相关流程: ```makefile make check make check-qtest-arm ``` 这些命令能够覆盖大部分常见边界条件下的表现评估需求[^2]^。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值