如何像bochs一样获得qemu重启原因

how get the qemu reboot reason like bochs

我写了一个简单的os,由mbr.bin、loader.bin和kernel.bin构成。这是我的 main.c 用于创建 kernel.bin

#include "print.h" 
void main(void) 
{
     put_str("I am kernel\n");
     while(1);
}

这是我的 bochsrc 文件:

# 机器内存: 32MB
megs: 32

# 启动方式
boot: disk

# 关闭鼠标
mouse: enabled=0

# 硬盘设置 
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="image/hd60M.img", mode=flat, cylinders=121, heads=16, spt=63


当我使用 bochs 到 运行 image/hd60M.img 时一切正常,但是当我使用 qemu-system-i386 ./image/hd60M.img 命令时,qemu 跳转到内核并显示“我是内核”也是,但是在没有日志的qemu重启之后,我想得到qemu重启的原因,如果它在bochs中,bochs会自动显示重启原因。

所以,请问qemu重启的原因是什么,非常感谢!

QEMU 通常不会提供那种客户调试信息:它的目的更多是 运行 快速更正客户代码,而不是诊断不正确的客户代码中的错误。

我们提供的调试工具有:

  • gdbstub,它允许您连接访客架构 gdb 以进行系统级调试,包括单步执行和断点。这是对用户最友好的调试选项。
  • “-d”选项发出模拟活动的调试日志。这主要用于 QEMU 本身的调试,并且要解释其输出,您通常需要了解 QEMU 本身的内部工作方式以及客户机 CPU 的工作方式。 -d 标志 'int,cpu_reset,guest_errors' 在这里可能很有用,但它们的输出可能有点神秘。