出于单元测试的目的,我希望能够使用 qemu 运行裸机二进制文件并捕获它的输出。
示例文件:
#include <stdio.h>
#include <stdint.h>
static void qemu_exit() {
register uint32_t r0 __asm__("r0");
r0 = 0x18;
register uint32_t r1 __asm__("r1");
r1 = 0x20026;
__asm__ volatile("bkpt #0xAB");
}
int main(void) {
puts("This is some example text that I want to capture");
qemu_exit();
return 0;
}
运行:
qemu-system-gnuarmeclipse --nographic --no-reboot \
--board STM32F4-Discovery --mcu STM32F429ZI \
--semihosting-config enable=on,target=native \
--image <binary>
显示到控制台的是:
QEMU 2.8.0-13 monitor - type 'help' for more information
(qemu) This is some example text that I want to capture
此“示例文本”是在 QEMU 中生成的,因此将 stdout 重定向到文件不会捕获它(仅限:QEMU 2.8.0-13 监视器 - 键入“帮助”以获取更多信息 (qemu))。-d help
就我所见,查看可用的 qemu 日志记录选项并没有提供任何东西。
编辑
一个 hacky 解决方案是使用脚本来捕获终端会话:
script --quiet --command <qemu-shell-script-wrapper>