Enviar una interrupción no enmascarable a una máquina virtual con VMware Fusion

3

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?

zneak
fuente
Esta es una vieja pregunta pero. 1) Lo dudo. 2) ¿Qué obtienes cuando presionas el botón NMI en tu host? Eso es asumiendo que tienes un botón físico para eso. La mayoría de los servidores lo hacen, pero la mayoría de las computadoras de escritorio del consumidor dejaron esto fuera.
Hennes
En mi sistema operativo obtienes un volcado por caída del kernel para que puedas inspeccionar y depurar el estado, que es lo que quiero.
bahamat

Respuestas:

1

Puede establecer / agregar el 0x4indicador de bit al debugargumento de la boot-argsvariable a través del nvramcomando. 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 presionar Command-Option-Control-Shift-Escapesu VM y acceder al depurador en cualquier momento (por alguna razón, también puede presionar fnsi 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.

Romeo
fuente
En un host Mac, ¿iniciará eso un NMI en el host o VM?
zneak
Eso generará un NMI en su VM que le da la oportunidad de conectarse al depurador remoto. Luego, desde la terminal de su tipo de máquina host xcrun lldb, luego(lldb) kdp-remote <vm ip>
Romeo
@zneak ¿eso te ayudó?
Romeo
No lo he probado La pregunta es de hace 3 años, ya no uso VMware o desarrollo de kernel.
zneak
Si, esto funciona. Solo asegúrese de que el host no tenga el mismo indicador de depuración establecido, o puede NMI el host en su lugar.
rgov