如何获得像bochs那样的qemu重启理由



我写了一个简单的操作系统,由mbr.bin、loader.bin和kernel.bin组成

#include "print.h" 
void main(void) 
{
put_str("I am kerneln");
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通常不会提供这种来宾调试信息:它更多的是为了快速运行正确的来宾代码,而不是诊断错误的来宾代码中的错误。

我们提供的调试设施有:

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

最新更新