web-dev-qa-db-ja.com

qemu仮想マシンのロギングとデバッグ

ハイパーバイザーのHDDにスペースが残っていないため、qemu仮想マシンが数回クラッシュしました。これにより、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ファイルさえ作成しませんでした。

さらに、qemumessagesまたはカーネルリングバッファー(dmesg)に書き込みません。 qemu仮想マシンのロギングを有効にするためのベストプラクティスは何ですか?

12
Martin

qemuコマンドは、-dというログファイルを作成する単純な/tmp/qemu.logスイッチを受け入れます。

QEMU Monitor を使用して、より多くのロギング/デバッグオプションにアクセスできます(例:qemu -monitor stdio)。

10

QEMUが提供するロギングオプションは、必要なものに対して低すぎるレベルになります。問題は、仮想ハードウェアが正しく動作していないことではなく、VM内のソフトウェアに注意が必要なことだけです。

この点で、VMは実際のマシンと同じで、解決策は同じです。あなたの質問は、VMがFreeBSDを実行しているため、ネットワーク接続を介してrsyslogを使用してログを外部のsyslogサーバー(ホストマシンである可能性があります)にプッシュする必要があります。

(私はBSDに精通していないので、rsyslogがここで正しいまたは唯一の解決策であるかどうかは100%確実ではありませんが、そのキーワードで開始できます。)

3
ams

QEMUの起動時に-d <component>パラメーターを使用すると、そのコンポーネントのデバッグが有効になります。これは、QEMUソースコードがあり、特定のコンポーネントの詳細なデバッグを確認する場合に役立ちます。

たとえば、-d cpu_resetを渡すと、CPU_LOG_RESETデバッグが有効になり、「CPUリセット前のCPU状態が表示されます」。ロギングオプションの完全なリストについては、 qemu/util/log.c を参照してください。

デフォルトでは、ログは/tmp/qemu.logに書き込まれますが、-D <logfile>パラメーターを使用して別のログファイルを指定できます。

0
seacoder