Partager via


Basculement entre les modes

Lorsque vous contrôlez le débogage en mode utilisateur à partir du débogueur du noyau, vous rencontrez quatre modes différents et vous pouvez basculer entre eux de différentes manières.

Note Dans la description de ce scénario, l’application cible fait référence à l’application en mode utilisateur en cours de débogage, l’ordinateur cible fait référence à l’ordinateur qui contient l’application cible et le processus CDB ou NTSD, et l’ordinateur hôte fait référence à l’ordinateur qui contient le débogueur du noyau.

Les quatre modes suivants seront rencontrés :

Débogage en mode utilisateur
L’ordinateur cible et l’application cible sont gelés. L’invite de débogage en mode utilisateur s’affiche dans la fenêtre Debugger Command du débogueur du noyau. Dans WinDbg, l’invite dans le volet inférieur de la fenêtre WinDbg affiche Entrée>. Vous pouvez entrer des commandes à cette invite, comme si elles étaient entrées pendant le débogage en mode utilisateur, pour analyser l’état de l’application cible ou la faire exécuter ou l’exécuter. Les fichiers de symboles, dll d’extension et autres fichiers auxquels le débogueur accède seront ces fichiers sur l’ordinateur cible, et non sur l’ordinateur hôte.

Exécution de l’application cible
L’ordinateur cible est en cours d’exécution, l’application cible est en cours d’exécution et le débogueur est en attente. Ce mode est identique à laisser la cible s’exécuter dans le cadre d’un débogage ordinaire.

Mode veille
L’ordinateur cible est en cours d’exécution, mais l’application cible est figée et les deux débogueurs sont gelés. Ce mode est utile si vous devez effectuer quelque chose sur l’ordinateur cible, mais que vous ne souhaitez pas modifier l’état de la session de débogage.

Débogage en mode noyau
L’ordinateur cible et l’application cible sont figés. L’invite de débogage en mode noyau kd s’affiche> dans la fenêtre Commande du débogueur du débogueur du noyau. Ce mode est l’état de débogage classique en mode noyau.

La session commence en mode de débogage en mode utilisateur. Les actions et événements suivants entraînent le changement de mode :

  • Pour passer du débogage en mode utilisateur à l’exécution de l’application cible, utilisez la commande g (Go) à l’invite Input> .

  • Pour passer temporairement du débogage en mode utilisateur à l’exécution de l’application cible, puis revenir au débogage en mode utilisateur, utilisez une étape, une trace ou une autre commande d’exécution temporaire. Pour obtenir la liste de ces commandes, consultez Contrôle de la cible.

  • Pour passer du débogage en mode utilisateur au mode veille, utilisez la commande .sleep (Suspendre le débogueur). Cette commande est chrono timed. Lorsque l’heure expire, le système revient au débogage en mode utilisateur.

  • Pour passer du débogage en mode utilisateur au débogage en mode noyau, utilisez la commande .breakin (Arrêter le débogueur de noyau). Notez que .breakin peut échouer avec une erreur d’accès refusé si le processus appelant ne dispose pas de droits d’administrateur. Dans ce cas, basculez vers KD en émettant une courte commande .sleep et en appuyant sur Ctrl+C.

  • Vous pouvez passer de l’exécution de l’application cible au débogage en mode utilisateur uniquement dans certains environnements. Si l’ordinateur cible exécute Microsoft Windows XP ou une version ultérieure du système d’exploitation Windows, vous pouvez utiliser la commande d’extension !bpid . Si vous utilisez CDB (et non NTSD), vous pouvez activer la fenêtre CDB sur l’ordinateur cible et appuyer sur Ctrl+C.

  • Si l’application cible atteint un point d’arrêt, rencontre une exception, rencontre un autre événement contrôlé ou se termine, le système passe de l’exécution de l’application cible au débogage en mode utilisateur. Vous devez planifier de tels événements à l’avance, en particulier lorsque vous utilisez NTSD. Pour plus d’informations sur ces événements, consultez Utilisation de points d’arrêt et Contrôle des exceptions et des événements.

  • Pour passer de l’exécution de l’application cible au débogage en mode noyau, appuyez sur CTRL+C dans la fenêtre KD, appuyez sur Ctrl+BREAK ou cliquez sur Arrêter dans le menu Déboguer dans la fenêtre WinDbg, ou appuyez sur SYSRQ ou ALT+SYSRQ sur le clavier de l’ordinateur cible. (Si votre débogueur de noyau est KD et si vous appuyez sur Ctrl+C en même temps que le débogueur du noyau communique avec le débogueur en mode utilisateur, le débogueur en mode utilisateur peut vous capturer en appuyant sur Ctrl+C.)

  • Si le débogueur rencontre une erreur de noyau ou si vous utilisez l’outil Breakin.exe, le système passe de l’exécution de l’application cible au débogage en mode noyau.

  • Pour passer du mode veille au débogage en mode utilisateur, attendez que le temps de veille expire, démarrez un nouveau processus CDB sur l’ordinateur cible à l’aide de l’option de ligne de commande -wake ou utilisez la commande .wake (Wake Debugger) dans une autre copie de CDB ou NTSD sur l’ordinateur cible.

  • Pour sortir du débogage en mode noyau, utilisez la commande g (Go) à l’invite kd> . Cette commande revient au débogage en mode utilisateur ou à l’exécution de l’application cible (selon l’état le plus récemment utilisé).