如何像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' 在这里可能很有用,但它们的输出可能有点神秘。
我写了一个简单的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' 在这里可能很有用,但它们的输出可能有点神秘。