Share via


Débogage non invasif (mode utilisateur)

Si une application en mode utilisateur est déjà en cours d’exécution, le débogueur peut la déboguer de manière non invasive. Avec le débogage non invasif, vous n’avez pas autant d’actions de débogage. Toutefois, vous pouvez réduire l’interférence du débogueur avec l’application cible. Le débogage non invasif est utile si l’application cible a cessé de répondre.

Dans le débogage non invasif, le débogueur ne s’attache pas réellement à l’application cible. Le débogueur suspend tous les threads de la cible et a accès à la mémoire de la cible, aux registres et à d’autres informations de ce type. Toutefois, le débogueur ne peut pas contrôler la cible, de sorte que les commandes telles que g (Go) ne fonctionnent pas.

Si vous essayez d’exécuter des commandes qui ne sont pas autorisées pendant le débogage non invasif, vous recevez un message d’erreur indiquant : « Le débogueur n’est pas attaché, l’exécution du processus ne peut donc pas être surveillée ».

Sélection du processus à déboguer

Vous pouvez spécifier l’application cible par l’ID de processus (PID) ou le nom du processus.

Si vous spécifiez l’application par nom, vous devez utiliser le nom complet du processus, y compris l’extension de nom de fichier. Si deux processus portent le même nom, vous devez utiliser l’ID de processus à la place.

Pour plus d’informations sur la façon de déterminer l’ID de processus et le nom du processus, consultez Recherche de l’ID de processus.

Pour plus d’informations sur le démarrage et l’arrêt d’une session de débogage non invasive, consultez les rubriques suivantes :

Ligne de commande CDB

Pour déboguer de manière non invasive un processus en cours d’exécution à partir de la ligne de commande CDB, spécifiez l’option -pv, l’option -p et l’ID de processus dans la syntaxe suivante.

cdb -pv -pProcessID

Ou, pour déboguer de manière non invasive un processus en cours d’exécution en spécifiant le nom du processus, utilisez la syntaxe suivante à la place.

cdb -pv -pnProcessName

Il existe plusieurs autres options de ligne de commande utiles. Pour plus d’informations sur la syntaxe de ligne de commande, consultez Options de Command-Line CDB.

Ligne de commande WinDbg

Pour déboguer de manière non invasive un processus en cours d’exécution à partir de la ligne de commande WinDbg, spécifiez l’option -pv, l’option -p et l’ID de processus dans la syntaxe suivante.

windbg -pv -pProcessID

Ou, pour déboguer de manière non invasive un processus en cours d’exécution en spécifiant le nom du processus, utilisez la syntaxe suivante à la place.

windbg -pv -pnProcessName

Il existe plusieurs autres options de ligne de commande utiles. Pour plus d’informations sur la syntaxe de ligne de commande, consultez Options de Command-Line WinDbg.

WinDbg Menu

Lorsque WinDbg est en mode dormant, vous pouvez déboguer de manière non invasive un processus en cours d’exécution en cliquant sur Attacher à un processus dans le menu Fichier ou en appuyant sur F6.

Lorsque la boîte de dialogue Attacher au processus s’affiche, sélectionnez la zone Case activée non invasif. Ensuite, sélectionnez la ligne qui contient l’ID et le nom de processus souhaités. (Vous pouvez également entrer l’ID de processus dans la zone ID de processus.) Enfin, cliquez sur OK.

Fenêtre commande du débogueur

Si le débogueur est déjà actif, vous pouvez déboguer de manière non invasive un processus en cours d’exécution à l’aide de la commande .attach -v (Attacher au processus) dans la fenêtre Commande du débogueur.

Vous pouvez utiliser la commande .attach si le débogueur débogue déjà un ou plusieurs processus de manière invasive. Vous pouvez utiliser cette commande dans CDB si elle est dormante, mais pas dans un WinDbg dormant.

Si la commande .attach -v réussit, le débogueur débogue le processus spécifié la prochaine fois que le débogueur émet une commande d’exécution. Étant donné que l’exécution n’est pas autorisée pendant le débogage non invasif, le débogueur ne peut pas déboguer plusieurs processus à la fois. Cette restriction signifie également que l’utilisation de la commande .attach -v peut rendre une session de débogage invasive existante moins utile.

Début de la session de débogage

Pour plus d’informations sur le démarrage d’une session de débogage, consultez Opération du débogueur.