Share via


Contrôle de la cible

Lorsque vous déboguez une application cible en mode utilisateur ou un ordinateur cible en mode noyau, la cible peut être en cours d’exécution ou arrêtée.

Lorsque le débogueur se connecte à une cible en mode noyau, le débogueur laisse la cible en cours d’exécution, sauf si vous utilisez l’option de ligne de commande -b, que le système cible a cessé de répondre (c’est-à-dire qu’il s’est planté), ou que le système cible est toujours arrêté en raison d’une action de débogage du noyau antérieure.

Lorsque le débogueur démarre ou se connecte à une cible en mode utilisateur, le débogueur arrête immédiatement la cible, sauf si vous utilisez l’option de ligne de commande -g . Pour plus d’informations, consultez Point d’arrêt initial.

Lorsque la cible est en cours d’exécution

Lorsque la cible est en cours d’exécution, la plupart des actions de débogueur ne sont pas disponibles.

Si vous souhaitez arrêter une cible en cours d’exécution, vous pouvez émettre une commande Arrêter. Cette commande entraîne l’entrée du débogueur dans la cible. Autrement dit, le débogueur arrête la cible et tout le contrôle est donné au débogueur. L’application peut ne pas s’arrêter immédiatement. Par exemple, si tous les threads exécutent actuellement le code système ou sont en attente, l’application ne s’interrompt qu’une fois que le contrôle est retourné au code de l’application.

Si une cible en cours d’exécution rencontre une exception, si certains événements se produisent, si un point d’arrêt est atteint ou si l’application se ferme normalement, la cible s’interrompt dans le débogueur. Cette action arrête la cible et donne tout le contrôle au débogueur. Un message s’affiche dans la fenêtre Commande du débogueur et décrit l’erreur, l’événement ou le point d’arrêt.

Lorsque la cible est arrêtée

Pour démarrer ou contrôler l’exécution de la cible, vous pouvez effectuer les opérations suivantes :

  • Pour que l’application commence à s’exécuter, exécutez la commande Go .

  • Pour parcourir l’application une instruction à la fois, utilisez les commandes Pas à pas ouPas à pas. Si un appel de fonction se produit, Step Into entre la fonction et continue à parcourir chaque instruction. Pas à pas traite l’appel de fonction comme une seule étape. Lorsque le débogueur est en mode Assembly, l’exécution d’une étape se produit une instruction de machine à la fois. Lorsque le débogueur est en mode source, une étape se produit une ligne source à la fois.

  • Pour terminer la fonction actuelle et arrêter lorsque le retour se produit, utilisez les commandes Pas à pas ou Suivre et Surveiller . La commande Step Out continue jusqu’à ce que la fonction actuelle se termine. Trace et Watch continuent jusqu’à ce que la fonction actuelle se termine et affiche également un résumé des appels de la fonction. Toutefois, vous devez émettre la commande Trace et Watch sur la première instruction de la fonction en question.

  • Si une exception se produit, vous pouvez utiliser les commandes Go with Exception Handled et Go with Exception Not Handled pour reprendre l’exécution et contrôler la status de l’exception. (Pour plus d’informations sur les exceptions, consultez Contrôle des exceptions et des événements.)

  • (WinDbg uniquement) Si vous sélectionnez une ligne dans la fenêtre Désassemblement ou une fenêtre Source , puis utilisez la commande Exécuter au curseur , le programme s’exécute jusqu’à ce qu’il rencontre la ligne sélectionnée.

  • (Mode utilisateur uniquement) Pour fermer l’application cible et la redémarrer à partir du début, utilisez la commande Redémarrer . Vous pouvez utiliser cette commande uniquement avec un processus créé par le débogueur. Une fois le processus redémarré, il s’interrompt immédiatement dans le débogueur.

  • (WinDbg uniquement) Pour fermer l’application cible et effacer le débogueur, utilisez la commande Arrêter le débogage . Cette commande vous permet de commencer à déboguer une autre cible.

Formulaires de commandes

La plupart des commandes permettant de démarrer ou de contrôler l’exécution de la cible existent sous forme de commandes de texte, de commandes de menu, de boutons de barre d’outils et de touches de raccourci. En tant que commandes de texte de base, vous pouvez utiliser ces commandes dans CDB, KD ou WinDbg. (La forme textuelle des commandes prend souvent en charge des options supplémentaires, telles que la modification de l’emplacement du compteur du programme ou l’exécution d’un nombre fixe d’instructions.) Vous pouvez utiliser les commandes de menu, les boutons de barre d’outils et les touches de raccourci dans WinDbg.

Vous pouvez utiliser les commandes dans les formulaires suivants.

Commande Commande WinDbg Touches de raccourci WinDbg Résultat

Déboguer | Exécuter au curseur

F7

CTRL + F10

(WinDbg uniquement) S’exécute jusqu’à atteindre la ligne que le curseur marque.

Déboguer | Arrêter le débogage

MAJ + F5

Arrête tout le débogage et ferme la cible.

(CDB/KD uniquement) Ctrl+C

Déboguer | Pause

CTRL + ARRÊT

L’exécution s’arrête et le débogueur s’insère dans la cible.

.restart (Redémarrer l’application cible)

Déboguer | Redémarrer

Ctrl + Maj + F5

(Mode utilisateur uniquement) Redémarre l’application cible.

g (Go)

Déboguer | Aller

F5

La cible s’exécute librement.

gc (Passer du point d’arrêt conditionnel)

Reprend l’exécution après un point d’arrêt conditionnel.

gh (Go with Exception Handled)

Déboguer | Exception go gérée

Identique à g (Go), sauf que l’exception actuelle est traitée comme gérée.

gn (Go with Exception Not Handled)

Déboguer | Go Unhandled Exception

Identique à g (Go), sauf que l’exception actuelle est traitée comme non gérée.

gu (Monter)

Déboguer | Pas à pas

MAJ + F11

La cible s’exécute jusqu’à ce que la fonction actuelle soit terminée.

p (étape)

Déboguer | Pas à pas

F10

Target exécute une instruction. Si cette instruction est un appel de fonction, cette fonction est exécutée en une seule étape.

pa (étape à l’adresse)

La cible s’exécute jusqu’à ce qu’elle atteigne l’adresse spécifiée. Toutes les étapes de cette fonction sont affichées (mais les étapes des fonctions appelées ne le sont pas).

pc (étape de l’appel suivant)

La cible s’exécute jusqu’à l’instruction d’appel suivante. Si l’instruction actuelle est une instruction d’appel , cet appel est exécuté complètement et l’exécution se poursuit jusqu’à l’appel suivant.

pct (étape de l’appel suivant ou retour)

La cible s’exécute jusqu’à ce qu’elle atteigne une instruction d’appel ou une instruction de retour .

ph (étape vers instruction de branchement suivante)

La cible s’exécute jusqu’à ce qu’elle atteigne n’importe quel type d’instruction de branchement, y compris les branches conditionnelles ou inconditionnelles, les appels, les retours et les appels système.

pt (Retour de l’étape suivante)

La cible s’exécute jusqu’à ce qu’elle atteigne une instruction de retour .

t (Trace)

Déboguer | Pas à pas dans

F11

F8

Target exécute une instruction. Si cette instruction est un appel de fonction, le débogueur effectue des suivis dans cet appel.

ta (Trace à l’adresse)

La cible s’exécute jusqu’à ce qu’elle atteigne l’adresse spécifiée. Toutes les étapes de cette fonction et des fonctions appelées sont affichées.

Tb (Trace à la branche suivante)

(Tous les modes, à l’exception du mode noyau, uniquement sur les systèmes x86) La cible s’exécute jusqu’à ce qu’elle atteigne l’instruction de branche suivante.

tc (Trace jusqu’à l’appel suivant)

La cible s’exécute jusqu’à l’instruction d’appel suivante. Si l’instruction actuelle est une instruction d’appel , l’instruction est tracée dans jusqu’à ce qu’un nouvel appel soit atteint.

tct (Trace jusqu’à l’appel suivant ou retour)

La cible s’exécute jusqu’à ce qu’elle atteigne une instruction d’appel ou une instruction de retour . Si l’instruction actuelle est une instruction d’appel ou de retour , l’instruction est traquée dans jusqu’à ce qu’un nouvel appel ou un nouveau retour soit atteint.

th (Trace to Next Branching Instruction)

La cible s’exécute jusqu’à ce qu’elle atteigne n’importe quel type d’instruction de branchement, y compris les branches conditionnelles ou inconditionnelles, les appels, les retours et les appels système. Si l’instruction actuelle est une instruction de branchement, l’instruction est tracée dans jusqu’à ce qu’une nouvelle instruction de branchement soit atteinte.

tt (trace jusqu’au retour suivant)

La cible s’exécute jusqu’à ce qu’elle atteigne une instruction de retour . Si l’instruction actuelle est une instruction de retour , l’instruction est traquée dans jusqu’à ce qu’un nouveau retour soit atteint.

wt (Trace and Watch Data)

La cible s’exécute jusqu’à l’achèvement de l’ensemble de la fonction spécifiée. Les statistiques sont ensuite affichées.

Pour plus d’informations sur le redémarrage de l’ordinateur cible, consultez Blocage et redémarrage de l’ordinateur cible.

Options de ligne de commande

Si vous ne souhaitez pas que l’application s’arrête immédiatement au démarrage ou au chargement, utilisez CDB ou WinDbg avec l’option de ligne de commande -g . Pour plus d’informations sur cette situation, consultez Point d’arrêt initial.

CDB et WinDbg prennent également en charge l’option de ligne de commande-G. Cette option entraîne la fin de la session de débogage si l’application se termine correctement.

La commande suivante tente d’exécuter l’application du début à la fin, et l’invite de débogueur s’affiche uniquement si une erreur se produit.

cdb -g -G ApplicationName 

Vous pouvez utiliser l’option de ligne de commande-pt pour définir le délai d’expiration de l’arrêt. Certains problèmes peuvent rendre la cible incapable de communiquer avec le débogueur. Si une commande d’arrêt est émise et que le débogueur ne peut pas s’introduire dans la cible après ce délai, le débogueur affiche un message « Délai d’expiration du délai d’arrêt ».

À ce stade, le débogueur cesse d’essayer de s’introduire dans la cible. Au lieu de cela, le débogueur suspend la cible et vous permet d’examiner (mais pas de contrôler) l’application cible.

Le délai d’attente par défaut est de 30 secondes.