[unix] qemu 가상 머신의 로깅 및 디버깅

나는 한 qemuHDD가 하이퍼 바이저에 남은 공간이 없었기 때문에 여러 번 추락 가상 머신을. 이로 인해 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쓰지 않는 것 같습니다 . 가상 머신에 대한 로깅을 활성화하는 모범 사례는 무엇입니까 ?messagesdmesgqemu



답변

qemu명령은 -d이라는 로그 파일을 생성 하는 간단한 스위치를 허용합니다 /tmp/qemu.log.

QEMU 모니터 를 통해 더 많은 로깅 / 디버깅 옵션에 액세스 할 수 있습니다 (예 🙂qemu -monitor stdio .


답변

QEMU가 제공하는 모든 로깅 옵션은 필요한 수준에 비해 너무 낮은 수준입니다. 문제는 가상 하드웨어의 오작동이 아니라 VM 내부의 소프트웨어에주의가 필요하다는 것입니다.

이와 관련하여 VM은 실제 시스템과 다르지 않으며 솔루션도 동일합니다. 귀하의 질문에 따르면 VM에서 FreeBSD를 실행 중이므로 rsyslog네트워크 연결을 통해 로그를 외부 syslog 서버 (호스트 시스템 일 수 있음)로 푸시하는 방법 을 사용 하십시오.

(저는 BSD에 익숙하지 않으므로 rsyslog여기에 옳거나 유일한 해결책인지 100 % 확신 하지는 않지만 키워드를 시작해야합니다.)


답변

-d <component>QEMU를 시작할 때 매개 변수 를 사용하면 해당 구성 요소에 대한 디버깅이 가능합니다. QEMU 소스 코드가 있고 특정 구성 요소에 대한 자세한 디버그를 보려는 경우에 유용합니다.

예를 들어, 전달 -d cpu_reset하면 “CPU 재설정 전에 CPU 상태를 표시하는”CPU_LOG_RESET 디버깅이 활성화됩니다. 로깅 옵션의 전체 목록은 qemu / util / log.c 를 참조하십시오 .

기본적으로 로그는 /tmp/qemu.log에 기록되지만 -D <logfile>매개 변수를 사용하여 다른 로그 파일을 지정할 수 있습니다 .


답변