Estoy usando una máquina virtual para depurar el kernel en Mac OS X porque es más barata y conveniente que otra computadora.
Desafortunadamente, a diferencia del equivalente de Windows, no es posible utilizar el depurador para detener el kernel. Para detenerlo, debes 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 se puede realizar en una máquina virtual.
Encontre unguión descuidadoque suspende la máquina virtual, edita el estado suspendido para indicar que hay una NMI pendiente y la 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?
Respuesta1
Puede configurar/agregar el 0x4
indicador de bits al debug
argumento de la boot-args
variable mediante el nvram
comando. He aquí un ejemplo:
sudo nvram boot-args="debug=0x144 kext-dev-mode=1 kcsuffix=development pmuflags=1 -v"
Como se describeaquí, entre otros argumentos, la debug=0x4
bandera le permite acceder al depurador en NMI. Esto significa que puede presionar Command-Option-Control-Shift-Escape
su VM y acceder al depurador en cualquier momento (por alguna razón, es posible que también deba presionar fn
si la combinación de teclas mencionada anteriormente no funciona).
Eventualmente, después de establecer puntos de interrupción, inspeccionar la memoria, imprimir un seguimiento, etc., deberá escribir continue
para que el kernel reanude la ejecución.