Envío de una interrupción no enmascarable a una máquina virtual con VMware Fusion

Envío de una interrupción no enmascarable a una máquina virtual con VMware Fusion

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 0x4indicador de bits al debugargumento de la boot-argsvariable mediante el nvramcomando. 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=0x4bandera le permite acceder al depurador en NMI. Esto significa que puede presionar Command-Option-Control-Shift-Escapesu VM y acceder al depurador en cualquier momento (por alguna razón, es posible que también deba presionar fnsi 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 continuepara que el kernel reanude la ejecución.

información relacionada