Estoy usando una máquina virtual para depurar el kernel en Mac OS X porque es más barato y más conveniente que otra computadora.
Desafortunadamente, al contrario del equivalente de Windows, no es posible usar el depurador para detener el núcleo. Para detenerlo, debe enviar a la máquina una interrupción no enmascarable. En una máquina física, puede hacerlo con los indicadores de depuración correctos en el arranque y luego manteniendo ⌘presionadas ambas teclas mientras presiona el botón de encendido. Sin embargo, esta combinación de teclas no puede realizarse en una máquina virtual.
Encontré un script descuidado que suspende la máquina virtual, edita el estado suspendido para indicar que hay un NMI pendiente y lo reanuda, pero esto parece una pérdida de tiempo.
¿Es posible enviar una interrupción no enmascarable a una máquina virtual con VMware Fusion?

Respuestas:
Puede establecer / agregar el
0x4indicador de bit aldebugargumento de laboot-argsvariable a través delnvramcomando. Aquí hay un ejemplo:sudo nvram boot-args="debug=0x144 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v"Como se describe aquí , entre los otros argumentos, el
debug=0x4indicador le permite ingresar al depurador en NMI. Esto significa que puede presionarCommand-Option-Control-Shift-Escapesu VM y acceder al depurador en cualquier momento (por alguna razón, también puede presionarfnsi la combinación de teclas mencionada anteriormente no funciona).Finalmente, después de establecer puntos de interrupción, inspeccionar la memoria, imprimir una traza inversa, etc., deberá escribir
continuepara que el núcleo reanude la ejecución.fuente
xcrun lldb, luego(lldb) kdp-remote <vm ip>