Share via


Démarrer, interrompre, parcourir et arrêter le débogueur Visual Studio

Dans cette rubrique

Dans cette rubrique

Commencez à déboguer

  • Attachement à un processus

  • Démarrez automatiquement une application dans le débogueur

Parcourez le code dans une session de débogage

  • Divisez en code en utilisant des points d'arrêt ou s'arrêter tous

  • Exécutez pas - à - pas, sur, ou hors de le code

  • Exécutez à un emplacement spécifié ou fonctionnent

  • Placez l'instruction suivante à exécuter

  • Restrict l'exécution pas - à - pas uniquement à mon code

  • Exécutez pas - à - pas des appels système

  • Effectuez un pas - à - pas détaillé des propriétés et des opérateurs dans le code managé

Arrêtez le débogage

Commencez à déboguer

Lorsque votre solution est ouverte est Visual Studio, vous avez trois options pour démarrer le débogage :

Choisissez Déboguer, Démarrer le débogage (clavier : F5).

Votre application démarre et s'exécute alors jusqu'à ce que :

  • Le débogueur atteint un point d'arrêt.

  • Vous Arrêter le débogage choisissez dans le menu Déboguer .

  • Une exception est levée.

  • Les sorties d'application.

Choisissez Déboguer, Pas à pas détaillé (clavier : F11) ou Déboguer, Pas à pas principal (clavier : F10).

Vos démarre puis change d'application sur la première ligne.

Dans une fenêtre source, sélectionnez une ligne de code exécutable et choisissez Exécuter jusqu'au curseur dans le menu contextuel.

Votre application démarre et s'exécute jusqu'à ce qu'elle atteigne un point d'arrêt ou l'emplacement du curseur, celui qui vient en premier.

y740d9d3.collapse_all(fr-fr,VS.110).gifAttachement à un processus

Le débogueur peut également être attaché à un programme qui s'exécute dans un processus en dehors de Visual Studio.Une fois que vous joint à un programme, vous pouvez utiliser les commandes d'exécution du débogueur, examinez l'état du programme, et ainsi de suite.Possibilités d'inspection du programme peut être limitée, selon que le programme a été créé avec les informations de débogage et si vous avez accès au code source de programme, et si le compilateur JIT common langage runtime suit les informations de débogage.

Pour attacher un processus qui s'exécute sur votre ordinateur local

Choisissez Déboguer, Attacher au processus.Dans la boîte de dialogue Attacher au processus, sélectionnez le processus dans la liste Processus disponibles, puis choisissez Attacher.

Boîte de dialogue Attacher au processus

Consultez Attachement à des processus en cours d'exécution pour plus d'informations.

y740d9d3.collapse_all(fr-fr,VS.110).gifDémarrez automatiquement une application dans le débogueur

Il peut être utile de déboguer le code de démarrage d'une application lancée par un autre processus.C'est le cas des services et des actions d'installation personnalisée.Dans ces scénarios, il est possible de demander un lancement du débogueur et sa connexion automatique au démarrage de l'application.

  1. Démarrez l'éditeur du registre (regedit.exe).

  2. Accédez au dossier HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\options exécution de fichier image .

  3. Sélectionnez le dossier de l'application que vous souhaitez démarrer dans le débogueur.

    Si le nom de l'application n'est pas répertorié comme dossier enfant, sélectionnez Options d'exécution de fichier image puis choisissez Nouveau, Clé dans le menu contextuel.Sélectionnez la nouvelle clé, choisissez Renommer dans le menu contextuel, puis entrez le nom de l'application.

  4. Dans le menu contextuel du dossier d'application, choisissez Nouveau, Valeur de chaîne.

  5. Remplacez le nom de la nouvelle valeur d' New Value par débogueur.

  6. Dans le menu contextuel de l'entrée de débogueur, choisissez Modifier.

  7. Dans la boîte de dialogue de chaîne de modification, tapez vsjitdebugger.exe dans la zone Données de la valeur .

    Boîte de dialogue Modification de la chaîne

Entrée de démarrage du débogueur automatique dans regedit.exe

Dans cette rubrique

Parcourez le code dans une session de débogage

y740d9d3.collapse_all(fr-fr,VS.110).gifDivisez en code en utilisant des points d'arrêt ou s'arrêter tous

Lorsque vous déboguez une application avec le débogueur Visual Studio, votre application ou exécute (exécuter) ou elle est en mode arrêt.

Le débogueur interrompt l'exécution de l'application lorsque l'exécution atteint un point d'arrêt ou lorsqu'une exception se produit.Vous pouvez également interrompre manuellement l'exécution à tout moment.

Un point d'arrêt est un signal qui indique le débogueur interrompre temporairement l'exécution de votre application à un moment donné.Lorsque l'exécution est suspendue au niveau d'un point d'arrêt, votre programme est dit en mode arrêt.Le passage en mode arrêt ne termine pas l'exécution de votre programme, qui peut reprendre à tout moment.

La plupart des fonctionnalités du débogueur, telles que des valeurs variables d'affichage dans la fenêtre Variables locales ou des expressions de évaluer dans la fenêtre Espion, sont disponibles qu'en mode arrêt.Tous les éléments de votre application restent (fonctions, des variables, les objets et restent en mémoire, par exemple), mais leurs déplacements et des activités sont interrompues.En mode arrêt, vous pouvez examiner leurs positions et états à la recherche de violations ou de bogues.Vous pouvez également définir des ajustements apportés à l'application en mode arrêt

Vous pouvez configurer des points d'arrêt pour interrompre l'exécution selon plusieurs conditions.Consultez Utilisation de points d'arrêt et de points de trace.Cette section décrit deux méthodes de base de diviser en code.

Définissez les points d'arrêt dans le code

Pour définir un point d'arrêt simple dans votre code, ouvrez le fichier source dans l'éditeur Visual Studio.Placez le curseur sur la ligne de code à laquelle vous souhaitez effectuer l'arrêt, puis choisissez Point d'arrêt, Insérer un point d'arrêt dans le menu contextuel (clavier : F9.L'exécution de change de débogueur juste avant la ligne est exécutée.

Définir un point d'arrêt

Les points d'arrêt dans Visual Studio fournissent un ensemble complet de fonctionnalités supplémentaires, telles que les points d'arrêt conditionnels et les points de trace.Consultez Utilisation de points d'arrêt et de points de trace.

Divisez manuellement en code

Pour diviser en ligne de code disponible dans une application en cours de exécution, choisissez Déboguer, Interrompre tout (clavier : Ctrl+Alt+Break).

  • Si vous déboguez avec l'option uniquement mon de code activée, vous interrompez à la ligne de code dans votre projet.Consultez Restrict stepping to Just My Code.

  • Si vous déboguez plusieurs programmes, un point d'arrêt ou une commande Interrompre tout affecte par défaut tous les programmes en cours de débogage.Consultez Change the break behavior of multiple processes dans cette rubrique.

  • Si vous interrompez lors de l'exécution du code sans fichiers correspondants de source ou de symbole (.pdf)), le débogueur affiche Fichiers sources introuvables ou une page Symboles introuvables qui peuvent vous aider à rechercher les fichiers appropriés.Consultez Rechercher des fichiers de symboles (.pdb), sources et binaires.

    Si vous ne pouvez pas accéder aux fichiers de prise en charge, vous pouvez toujours déboguer les instructions assembleur dans la fenêtre Code machine.

y740d9d3.collapse_all(fr-fr,VS.110).gifExécutez pas - à - pas, sur, ou hors de le code

L'une des procédures de débogage les plus communes est l'exécution pas à pas.L'exécution pas à pas consiste à exécuter le code ligne par ligne.Lorsque vous avez désactivé l'exécution, par exemple exécuter le débogueur à un point d'arrêt, vous pouvez utiliser trois commandes de menu Déboguer de parcourir le code :

Commande de menu

Raccourci clavier

Description

Pas à pas détaillé

F11

Si la ligne contient un appel à une fonction, Pas à pas détaillé n'exécute que l'appel, puis s'arrête à la première ligne de code se trouvant dans la fonction.Sinon, Pas à pas détaillé exécute l'instruction suivante.

Pas à pas principal

F10

Si la ligne contient un appel de fonction, Pas à pas principal exécute la fonction appelée, puis s'arrête à la première ligne de code à l'intérieur de l'appel de la fonction.Sinon, Pas à pas détaillé exécute l'instruction suivante.

Pas à pas sortant

Shift+F11

Pas à pas sortant reprend l'exécution de votre code jusqu'au retour de la fonction, puis opère une interruption au point de retour dans la fonction appelante.

  • Dans un appel à plusieurs fonctions imbriquées, Pas à pas détaillé va jusqu'à la fonction se trouvant au niveau le plus profond.Si vous utilisez Pas à pas détaillé dans un appel tel que Func1(Func2()), le débogueur parcourt la fonction Func2.

  • Le débogueur effectue un pas réellement à les instructions de code plutôt que les Lignes physiques.Par exemple une clause d' if peut être écrite sur une ligne :

    int x = 42;
    string s = "Not answered";
    if( int x == 42) s = "Answered!";
    
    Dim x As Integet = 42
    Dim s As String = "Not answered"
    If x = 42 Then s = "Answered!"
    

    Lorsque vous effectuez un pas - à - pas détaillé dans cette ligne, le débogueur traite la condition comme une étape et conséquent comme autres (dans cet exemple, la condition est remplie.)

y740d9d3.collapse_all(fr-fr,VS.110).gifExécutez à un emplacement spécifié ou fonctionnent

Quelquefois vous souhaiterez exécuter à un moment donné dans le code, et arrêter l'exécution.Si vous avez un point d'arrêt à l'emplacement où vous souhaitez effectuer l'arrêt, choisissez Déboguer, Démarrer le débogage si vous n'avez pas démarrer le débogage, ou, ou Déboguer, Continuer.(Dans les deux cas F5 est la touche de raccourci).Le débogueur s'arrête au point d'arrêt dans l'exécution du code.Choisissez Déboguer, Continuer jusqu'à ce que vous atteigniez le point d'arrêt que vous souhaitez.Consultez Set breakpoints in the code dans cette rubrique.

Vous pouvez également exécuter où vous avez défini le curseur dans l'éditeur de code, ou passer à la fonction spécifiée.

Exécutez à l'emplacement du curseur

Pour exécuter à l'emplacement du curseur, placez le curseur sur une ligne de code exécutable dans une fenêtre source.Dans le menu contextuel de l'éditeur, choisissez Exécuter jusqu'au curseur.

Exécutez à une fonction sur la pile des appels

Dans la fenêtre Pile des appels, sélectionnez la fonction, puis choisissez Exécuter jusqu'au curseur le menu contextuel.

Exécutez à une fonction spécifiée de nom

Vous pouvez demander au débogueur d'exécuter une application jusqu'à une fonction spécifiée.Vous pouvez spécifier la fonction de nom ou vous pouvez la choisir de la pile des appels.

Pour spécifier une fonction de nom, choisissez Déboguer, Nouveau point d'arrêt, Interrompre à la fonction, pour écrire le nom de la fonction et de toute autre information d'identification.

Boîte de dialogue Nouveau point d'arrêt

Si la fonction est surchargée ou dans plusieurs espaces de noms, vous pouvez choisir les fonctions que vous souhaitez dans la boîte de dialogue Choisir les points d'arrêt .

Boîte de dialogue Choisir les points d'arrêt

y740d9d3.collapse_all(fr-fr,VS.110).gifPlacez l'instruction suivante à exécuter

Après avoir pénétriez par arrêt de l'exécution dans le débogueur, vous pouvez déplacer le point d'exécution pour définir l'instruction suivante du code à exécuter.Dans la marge d'une fenêtre source ou Code Machine, une flèche jaune marque l'emplacement de la prochaine instruction à exécuter.Déplacer cette flèche permet d'ignorer une partie du code ou de revenir à une ligne déjà exécutée.Vous pouvez utiliser cette fonctionnalité, par exemple, pour ignorer une section de code qui contient un bogue connu.

Exemple2

Pour définir l'instruction suivante à exécuter, utilisez l'une de ces procédures :

  • Dans une fenêtre source, faites glisser la flèche jaune à un emplacement où vous souhaitez placer l'instruction suivante dans le même fichier source

  • Dans une fenêtre source, placez le curseur sur la ligne que vous souhaitez exécuter ensuite et choisissez Définir l'instruction suivante dans le menu contextuel.

  • Dans la fenêtre Code machine, placez le curseur sur l'instruction assembly que vous souhaitez exécuter ensuite et choisissez Définir l'instruction suivante dans le menu contextuel.

Mise en gardeAttention

Le fait de définir l'instruction suivante fait en sorte que le compteur du programme accède directement au nouvel emplacement.Utilisez cette commande avec précaution :

  • Les instructions entre les nouveaux et les anciens points d'exécution ne sont pas exécutées.

  • Si vous déplacez le point d'exécution vers l'arrière, les instructions déjà traitées ne sont pas annulées.

  • Le déplacement de l'instruction suivante vers une autre fonction ou portée entraîne généralement une altération de la pile des appels, provoquant une erreur ou exception d'exécution.Si vous tentez de déplacer l'instruction suivante vers une autre portée, le débogueur ouvre une boîte de dialogue avec un avertissement et vous donne une occasion d'annuler l'opération.En Visual Basic, vous ne pouvez pas déplacer l'instruction suivante à une autre portée ou fonction.

  • En C++ natif, si vous faites activer des contrôles à l'exécution, la définition de l'instruction suivante peut provoquer une exception soit levée lorsque l'exécution atteint la fin de la méthode.

  • Lorsque modifier & Continuer est activé, Définir l'instruction suivante échoue si vous avez effectué les modifications que modifier & Continuer ne peut pas remapper immédiatement.Par exemple, cela peut se produire si vous avez modifié le code contenu dans un bloc catch.Lorsque cela se produit.Vous verrez un message d'erreur indiquant que l'opération n'est pas prise en charge.

[!REMARQUE]

Dans du code managé, vous ne pouvez pas déplacer l'instruction suivante dans les conditions suivantes :

  • L'instruction suivante se trouve dans une méthode différente de celle de l'instruction actuelle.

  • Le débogage a été démarré à l'aide du débogage juste-à-temps.

  • Le déroulement d'une pile des appels est en cours.

  • Une exception System.StackOverflowException ou System.Threading.ThreadAbortException a été levée.

Il est impossible de définir l'instruction suivante lorsque l'application est active.Pour définir l'instruction suivante, le débogueur doit être en mode arrêt.

y740d9d3.collapse_all(fr-fr,VS.110).gifRestrict l'exécution pas - à - pas uniquement à mon code

Parfois, en cours de débogage, vous pouvez être amené à examiner uniquement le code que vous avez écrit et ignorer les autres éléments de code, par exemple les appels système.C'est précisément ce que permet de faire le mode de débogage Uniquement mon code.Uniquement mon code masque le code non-utilisateur pour l'empêcher d'apparaître dans les fenêtres du débogueur.Lorsque vous parcourez le code, le débogueur parcourt le code de non-utilisateur sans s'y arrêter.

Pour activer ou désactiver uniquement mon débogage de code, choisissez Déboguer, Options et paramètres.Dans Débogage, la page Général, contrôle ou Activer Uniquement mon codedésactivez.

Pour distinguer le code utilisateur de code non-utilisateur, uniquement mon code examine les fichiers de symboles (PDB) et des optimisations de programme.

Dans une version debug standard, l'optimisation est désactivée et des symboles de débogage sont créés pour tous les modules.Lorsque vous exécutez une version Debug, ces modules sont considérés comme du code utilisateur.Mais une fonction de bibliothèque qui est optimisée et n'a pas pour déboguer des symboles n'est pas considérée comme code utilisateur.L'option Uniquement mon code empêche que l'exécution ne s'arrête à des points d'arrêt dans le code de bibliothèque, qui ne correspond généralement pas à du code que vous souhaitez déboguer.Dans la fenêtre Points d'arrêt, ces points d'arrêt s'affichent avec l'icône de point d'arrêt désactivé.

Pour consulter l'intégralité du code et vous arrêter à tous les points d'arrêt, vous pouvez désactiver uniquement mon débogage de code à l'aide de la boîte de dialogue Options .

Trois attributs affectent également ce que le débogueur considère comme Mon code : DebuggerNonUserCodeAttribute indique au débogueur que le code auquel il s'applique n'est pas Mon code.DebuggerHiddenAttribute masque le code au débogueur, même si l'option Uniquement mon code est désactivée.DebuggerStepThroughAttribute indique au débogueur de passer pas à pas dans le code auquel il s'applique, plutôt que d'effectuer un pas à pas détaillé du code.

Lorsque l'option uniquement mon code est activé, vous pouvez choisir Interrompre tout dans le menu Déboguer et arrêter l'exécution à un emplacement où il n'existe aucun mon code à afficher.Lorsque cela se produit, aucun code n'est affiché.En outre, si vous choisissez une commande Exécuter pas à pas, vous passez à la ligne suivante de Mon code.

Les instructions break par programmation, par exemple les instructions Stop en Visual Basic, sont gérées différemment.Le débogueur s'arrête toujours sur ces instructions, même lorsque l'option Uniquement mon code est activée.Dans cette situation, le code non-utilisateur est affiché au lieu d'être masqué ; toutefois, l'exécution pas à pas vous fera passer du code non-utilisateur à la ligne suivante de Mon code.

[!REMARQUE]

Uniquement mon code n'est pas pris en charge pour les projets Smart Device.

y740d9d3.collapse_all(fr-fr,VS.110).gifExécutez pas - à - pas des appels système

Si vous avez chargement des symboles de débogage pour le code système et uniquement mon code n'est pas activé, vous pouvez entrer dans un appel système comme vous pouvez n'importe quel autre appel.

Pour savoir comment désactiver uniquement mon code, consultez Restrict stepping to Just My Code

Pour accéder aux fichiers de symboles Microsoft, consultez l' À l'aide de windows et d'autres symboles Microsoft dans la rubrique de Rechercher des fichiers de symboles (.pdb), sources et binaires .

Pour charger des symboles pour un composant système spécifique pendant le débogage :

  1. Ouvrez la fenêtre modules (clavier : Ctrl+Alt+U).

  2. Sélectionnez le module pour lequel vous souhaitez charger des symboles.

    Consultez la colonne État du symbole pour connaître les modules qui possèdent des symboles chargés.

  3. Choisissez Charger les symboles dans le menu contextuel.

y740d9d3.collapse_all(fr-fr,VS.110).gifEffectuez un pas - à - pas détaillé des propriétés et des opérateurs dans le code managé

Le débogueur effectue un pas sur les propriétés et les opérateurs en code managé par défaut.Dans la plupart des cas, cela fournit une meilleure expérience de débogage.Pour activer le pas - à - pas détaillé des propriétés et des opérateurs, choisissez Déboguer, Options et paramètres.Dans Débogage, page Général, désactivez la case à cocher Pas à pas principal dans les propriétés et les opérateurs (Managé uniquement)

Dans cette rubrique

Arrêtez le débogage

Arrêter le débogage signifie mettre fin à la session de débogage.Arrêter l'exécution signifie arrêter le processus en cours de débogage et mettre fin à la session de débogage.Ne confondez pas l'arrêt et l'interruption de l'exécution, laquelle suspend temporairement l'exécution du processus en cours de débogage sans désactiver la session de débogage.Détacher un processus arrête de déboguer le processus mais les feuilles il exécute.

Arrêtez le débogage de Visual Studio

Choisissez Déboguer, Arrêter le débogage.

Arrêter le débogage met fin au processus que vous déboguez si le programme a été démarré Visual Studio.Si vous joint au processus au lieu de le lancer Visual Studio, l'exécution du processus se poursuit.

Arrêtez le débogage et redémarrez

Choisissez Déboguer, Redémarrer pour arrêter la session de débogage en cours et pour redémarrer le projet de démarrage dans le débogueur.

Fermez l'application qui est débogué

Lorsque vous quittez une application qui est débogué, le débogage s'arrête automatiquement.