qemu 虚拟机的日志记录和调试

qemu 虚拟机的日志记录和调试

我的qemu虚拟机崩溃了好几次,因为管理程序中的 HDD 没有剩余空间。这让我想知道是否有可能为quemu虚拟机设置日志记录/调试。我尝试使用-D /tmp/qemu-debug-log命令启动虚拟机:

qemu-system-i386 -D /tmp/qemu-debug-log -monitor pty -device e1000,netdev=tap0 -netdev tap,id=tap0 -m 512M -display vnc=:1 -drive file=FreeBSD10.2

..但这甚至没有创建/tmp/qemu-debug-log文件。

另外,qemu似乎没有写入messages或内核环形缓冲区(dmesg)。为qemu虚拟机启用日志记录的最佳实践是什么?

答案1

qemu命令接受一个-D可以创建日志文件的简单开关。例如,包含-D ./log.txt将在您的工作目录中创建“log.txt”。

您可以通过以下方式访问更多日志记录/调试选项 QEMU监控器(例如qemu -monitor stdio)。

答案2

如果在启动 QEMU 时使用该-d <component>参数,它将启用该组件的调试。如果您有 QEMU 源代码并且想要查看给定组件的详细调试,这非常有用。

例如,传递-d cpu_reset将启用 CPU_LOG_RESET 调试,这将“在 CPU 重置之前显示 CPU 状态”。看qemu/util/log.c获取日志记录选项的完整列表。

默认情况下,日志写入/tmp/qemu.log,但您可以使用参数指定不同的日志文件-D <logfile>

答案3

QEMU 提供的任何日志记录选项对于您的需要来说都太低级了:您的问题不是虚拟硬件行为不当,而是虚拟机内的软件需要关注。

在这方面,虚拟机与真实机器没有什么不同,并且解决方案是相同的。您的问题表明虚拟机正在运行 FreeBSD,因此您应该检查使用rsyslog通过网络连接将日志推送到外部系统日志服务器(可能是您的主机)。

(我对 BSD 不太熟悉,所以我不能 100% 确定这rsyslog是正确的或唯一的解决方案,但该关键字应该可以帮助您入门。)

相关内容