4 votes

Envoi d'une interruption non masquable à une machine virtuelle avec VMware Fusion

J'utilise une machine virtuelle pour faire du débogage de noyau sur Mac OS X parce que c'est moins cher et plus pratique qu'un autre ordinateur.

Malheureusement, contrairement à l'équivalent Windows, il n'est pas possible d'utiliser le débogueur pour arrêter le noyau. Pour l'arrêter, vous devez envoyer à la machine une interruption non masquable. Sur une machine physique, vous pouvez le faire en utilisant les bons drapeaux de débogage au démarrage, puis en maintenant les deux touches tout en appuyant sur le bouton d'alimentation. Cependant, cette combinaison de touches n'est pas tout à fait réalisable sur une machine virtuelle.

J'ai trouvé un script bâclé qui suspend la machine virtuelle, modifie l'état de suspension pour indiquer qu'une NMI est en attente, et la reprend, mais cela semble être une perte de temps.

Est-il possible d'envoyer une interruption non masquable à une machine virtuelle avec VMware Fusion ?

1voto

Romeo Points 11

Vous pouvez définir/ajoutez le 0x4 à l'indicateur de bit debug argument de la boot-args par l'intermédiaire de la nvram commande. Voici un exemple :

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

Comme décrit aquí parmi les autres arguments, le debug=0x4 vous permet de passer dans le débogueur sur NMI. Cela signifie que vous pouvez appuyer sur Command-Option-Control-Shift-Escape sur votre VM et passer dans le débogueur à tout moment (pour une raison ou une autre, vous pouvez également avoir besoin d'appuyer sur fn si la combinaison de touches mentionnée ci-dessus ne fonctionne pas).

Finalement, après avoir défini des points d'arrêt, inspecté la mémoire, imprimé un backtrace, etc. continue pour que le noyau reprenne son exécution.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X