Débogage nonvasif (mode utilisateur)

Si une application en mode utilisateur est déjà en cours d’exécution, le débogueur peut le déboguer de manière nonvasive. Avec le débogage nonvasif, 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 nonvasif est utile si l’application cible a cessé de répondre.

Dans le débogage nonvasif, le débogueur n’est pas réellement attaché à l’application cible. Le débogueur suspend tous les threads de la cible et a accès à la mémoire, aux registres et à d’autres informations de ce type. Toutefois, le débogueur ne peut pas contrôler la cible. Par conséquent, 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 noninvasif, vous recevez un message d’erreur indiquant que « Le débogueur n’est pas attaché, de sorte que l’exécution du processus ne peut pas être surveillée ».

Sélection du processus de débogage

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 ont 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 nonvasive, consultez les rubriques suivantes :

Ligne de commande CDB

Pour déboguer 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 -p ProcessID

Ou, pour déboguer de manière nonvasive un processus en cours d’exécution en spécifiant le nom du processus, utilisez plutôt la syntaxe suivante.

cdb -pv -pn ProcessName

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

Ligne de commande WinDbg

Pour déboguer de manière nonvasive 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 -p ProcessID

Ou, pour déboguer de manière nonvasive un processus en cours d’exécution en spécifiant le nom du processus, utilisez plutôt la syntaxe suivante.

windbg -pv -pn ProcessName

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

WinDbg Menu

Lorsque WinDbg est en mode dormant, vous pouvez déboguer de manière nonvasive 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, cochez la case Non-vasive. Sélectionnez ensuite la ligne qui contient l’ID de processus et le nom souhaités. (Vous pouvez également entrer l’ID de processus dans la zone ID de processus.) Enfin, cliquez sur OK.

Fenêtre commande Débogueur

Si le débogueur est déjà actif, vous pouvez déboguer de manière nonvasive 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ébogueur débogue déjà un ou plusieurs processus invasifs. 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 nonvasif, le débogueur ne peut pas déboguer de manière nonvasive 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ébut d’une session de débogage, consultez Opération du débogueur.