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

Mar*_*tin 19 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
Run Code Online (Sandbox Code Playgroud)

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

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

Dmi*_*yev 16

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

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


sea*_*der 8

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

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

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


ams*_*ams 5

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

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

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