VMware Fusion을 사용하여 가상 머신에 마스크 불가능한 인터럽트 보내기

VMware Fusion을 사용하여 가상 머신에 마스크 불가능한 인터럽트 보내기

저는 Mac OS X에서 커널 디버깅을 하기 위해 가상머신을 사용하고 있습니다. 왜냐하면 다른 컴퓨터보다 저렴하고 편리하기 때문입니다.

불행하게도 Windows와 달리 디버거를 사용하여 커널을 중지하는 것은 불가능합니다. 이를 중지하려면 머신에 마스크할 수 없는 인터럽트를 보내야 합니다. 실제 머신에서는 부팅 시 올바른 디버그 플래그를 사용하고 전원 버튼을 누르는 동안 두 키를 모두 누른 상태에서 이를 수행할 수 있습니다. 그러나 이 키 조합은 가상 머신에서 실현될 수 없습니다.

나는 찾았다조잡한 스크립트가상 머신을 일시 중지하고 일시 중지 상태를 편집하여 NMI가 보류 중임을 나타내고 다시 시작하지만 이는 시간 낭비처럼 보입니다.

VMware Fusion을 사용하여 가상 머신에 마스크 불가능한 인터럽트를 보낼 수 있습니까?

답변1

명령을 통해 변수 의 인수 0x4에 비트 플래그를 설정/추가할 수 있습니다 . 예는 다음과 같습니다.debugboot-argsnvram

sudo nvram boot-args="debug=0x144 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v"

설명한대로여기, 다른 인수 중에서 debug=0x4플래그를 사용하면 NMI의 ​​디버거에 들어갈 수 있습니다. 즉, 언제든지 VM을 누르고 디버거에 들어갈 수 있습니다 (어떤 이유로 위에서 언급한 키 조합이 작동하지 않는 경우에도 Command-Option-Control-Shift-Escape눌러야 할 수도 있습니다 ).fn

continue결국 중단점을 설정하고, 메모리를 검사하고, 역추적을 인쇄한 후 실행을 재개하려면 커널을 입력해야 합니다 .

관련 정보