Tout d’abord examiner le débogueur Visual StudioFirst look at the Visual Studio Debugger

Cette rubrique présente les outils de débogueur fournis par Visual Studio.This topic introduces the debugger tools provided by Visual Studio. Dans le contexte de Visual Studio, lorsque vous déboguer votre application, cela signifie généralement que vous exécutez l’application avec le débogueur attaché (autrement dit, en mode débogage).In the Visual Studio context, when you debug your app, it usually means that you are running the application with the debugger attached (that is, in debugger mode). Lorsque vous effectuez cette opération, le débogueur fournit de nombreuses façons de voir ce que fait votre code pendant son exécution.When you do this, the debugger provides many ways to see what your code is doing while it runs. Vous pouvez parcourir votre code et examinez les valeurs stockées dans des variables, vous pouvez définir des observations sur les variables pour voir lorsque les valeurs changent, vous pouvez examiner le chemin d’accès de l’exécution de votre code, et al. S’il s’agit de la première fois que vous avez essayé de déboguer du code, il pouvez que vous souhaitez lire débogage pour les débutants avant de passer par cette rubrique.You can step through your code and look at the values stored in variables, you can set watches on variables to see when values change, you can examine the execution path of your code, et al. If this is the first time that you've tried to debug code, you may want to read Debugging for absolute beginners before going through this topic.

Les fonctionnalités décrites ici sont applicables à C#, C++, Visual Basic, JavaScript et d’autres langages pris en charge par Visual Studio (sauf mention contraire).The features described here are applicable to C#, C++, Visual Basic, JavaScript, and other languages supported by Visual Studio (except where noted).

Définissez un point d’arrêt et démarrez le débogueurSet a breakpoint and start the debugger

Pour déboguer, vous devez démarrer votre application avec le débogueur attaché au processus de l’application.To debug, you need to start your app with the debugger attached to the app process. F5 (Déboguer > Démarrer le débogage) est l’approche la plus courante pour ce faire.F5 (Debug > Start Debugging) is the most common way to do that. Toutefois, vous n’avez peut-être pas encore défini de points d’arrêt pour examiner le code de votre application : nous allons donc commencer par cela, pour ensuite démarrer le débogage.However, right now you may not have set any breakpoints to examine your app code, so we will do that first and then start debugging. Les points d'arrêt constituent une fonctionnalité élémentaire et essentielle de toute procédure de débogage fiable.Breakpoints are the most basic and essential feature of reliable debugging. Quand vous définissez un point d'arrêt, Visual Studio interrompt l'exécution du code à l'emplacement du point d'arrêt pour vous permettre d'examiner les valeurs des variables, le comportement de la mémoire ou encore la bonne exécution ou non d'une branche de code.A breakpoint indicates where Visual Studio should suspend your running code so you can take a look at the values of variables, or the behavior of memory, or whether or not a branch of code is getting run.

Si vous avez un fichier ouvert dans l’éditeur de code, vous pouvez définir un point d’arrêt en cliquant dans la marge à gauche d’une ligne de code.If you have a file open in the code editor, you can set a breakpoint by clicking in the margin to the left of a line of code.

Définissez un point d’arrêtSet a Breakpoint

Appuyez sur F5 (Déboguer > Démarrer le débogage) ou le démarrer le débogage bouton démarrer le débogage dans la barre d’outils de débogage et l’exécution du débogueur pour le premier point d’arrêt qu’il rencontre.Press F5 (Debug > Start Debugging) or the Start Debugging button Start Debugging in the Debug Toolbar, and the debugger runs to the first breakpoint that it encounters. Si l’application n’est pas encore en cours d’exécution, F5 démarre le débogueur et s’arrête au premier point d’arrêt.If the app is not yet running, F5 starts the debugger and stops at the first breakpoint.

Les points d’arrêt sont une fonctionnalité utile quand vous savez quelle ligne ou section de code vous voulez examiner en détail.Breakpoints are a useful feature when you know the line of code or the section of code that you want to examine in detail.

Nous fournissons des raccourcis clavier pour la plupart des commandes car elles rendent la navigation dans le code de votre application plus rapide.We provide the keyboard shortcuts for most commands because they make navigation of your app code quicker. (Les équivalents des commandes telles que les commandes de menu sont indiqués entre parenthèses.)(Equivalent commands such as menu commands are shown in parentheses.)

Pour démarrer votre application avec le débogueur attaché, appuyez sur F11 (Déboguer > pas à pas détaillé).To start your app with the debugger attached, press F11 (Debug > Step Into). F11 est la commande pas à pas détaillé et elle exécute l'application une instruction à la fois.F11 is the Step Into command and advances the app execution one statement at a time. Lorsque vous démarrez l’application en appuyant sur F11, le débogueur s’arrête à la première instruction exécutée.When you start the app with F11, the debugger breaks on the first statement that gets executed.

F11 Pas à pas détailléF11 Step Into

La flèche jaune représente l’instruction sur laquelle le débogueur a suspendu, ce qui interrompt également l’exécution d’application au même moment (cette instruction n’a pas encore exécuté).The yellow arrow represents the statement on which the debugger paused, which also suspends app execution at the same point (this statement has not yet executed).

F11 est une bonne solution pour examiner le flux d’exécution en détails.F11 is a good way to examine the execution flow in the most detail. (Pour se déplacer plus rapidement dans le code, nous vous montrerons d’autres options.) Par défaut, le débogueur ignore le code non-utilisateur (si vous souhaitez plus d’informations, consultez uniquement mon Code).(To move faster through code, we show you some other options as well.) By default, the debugger skips over non-user code (if you want more details, see Just My Code).

Note

Dans le code managé, vous verrez une boîte de dialogue vous demandant si vous souhaitez être averti quand vous effectuez automatiquement un pas à pas dans les propriétés et les opérateurs (le comportement par défaut).In managed code, you will see a dialog box asking if you want to be notified when you automatically step over properties and operators (default behavior). Si vous voulez changer cette option plus tard, désactivez Pas à pas principal dans les propriétés et les opérateurs dans le menu Outils > Options sous Débogage.If you want to change the setting later, disable Step over properties and operators setting in the Tools > Options menu under Debugging.

Ignorer le code pour ignorer les fonctionsStep over code to skip functions

Lorsque vous êtes sur une ligne de code qui est un appel de fonction ou une méthode, vous pouvez appuyer sur F10 (Déboguer > pas à pas principal) au lieu de F11.When you are on a line of code that is a function or method call, you can press F10 (Debug > Step Over) instead of F11.

F10 fait avancer le débogueur sans entrer dans les fonctions ou méthodes dans votre code d’application (le code s’exécute toujours).F10 advances the debugger without stepping into functions or methods in your app code (the code still executes). En appuyant sur F10, vous pouvez ignorer le code qui vous n'intéressent pas.By pressing F10, you can skip over code that you're not interested in. De cette façon, vous pouvez obtenir rapidement au code qui vous intéressent le plus.This way, you can quickly get to code that you are more interested in.

Pas à pas détaillé d’une propriétéStep into a property

Comme mentionné précédemment, par défaut, le débogueur ignore les propriétés et les champs managés, mais la commande Pas à pas détaillé spécifique vous permet de substituer ce comportement.As mentioned earlier, by default the debugger skips over managed properties and fields, but the Step Into Specific command allows you to override this behavior.

Cliquez avec le bouton droit sur une propriété ou un champ et choisissez Pas à pas détaillé spécifique, puis choisissez une des options disponibles.Right-click on a property or field and choose Step Into Specific, then choose one of the available options.

Pas à pas détaillé spécifiqueStep into Specific

Dans cet exemple, Pas à pas détaillé spécifique nous amène au code correspondant à Path.set.In this example, Step Into Specific gets us to the code for Path.set.

Pas à pas détaillé spécifiqueStep into Specific

Exécuter à un point dans votre code rapidement à l’aide de la sourisRun to a point in your code quickly using the mouse

Lorsque vous êtes dans le débogueur, pointez sur une ligne de code jusqu'à ce que le bouton Exécuter jusqu'au clic (Exécuter l’exécution jusqu’ici) Exécuter jusqu'au clic apparaisse à gauche.While in the debugger, hover over a line of code until the Run to Click (Run execution to here) button Run to Click appears on the left.

Exécuter jusqu’au clicRun to Click

Note

Le bouton Exécuter jusqu'au clic (Exécuter l'exécution jusqu’ici) est une nouveauté de Visual Studio 2017Visual Studio 2017.The Run to Click (Run execution to here) button is new in Visual Studio 2017Visual Studio 2017.

Cliquez sur le bouton Exécuter jusqu'au clic (Exécuter l'exécution jusqu’ici).Click the Run to Click (Run execution to here) button. Le débogueur passe à la ligne de code où vous avez cliqué.The debugger advances to the line of code where you clicked.

L’utilisation de ce bouton est similaire à la définition d’un point d’arrêt temporaire.Using this button is similar to setting a temporary breakpoint. Cette commande est également pratique pour se déplacer rapidement au sein de la région visible du code d’application.This command is also handy for getting around quickly within a visible region of app code. Vous pouvez utiliser le bouton Exécuter jusqu'au clic dans un fichier ouvert.You can use Run to Click in any open file.

Faire avancer le débogueur en dehors de la fonction ActiveAdvance the debugger out of the current function

Parfois, vous souhaiterez continuer votre session de débogage mais faire avancer le débogueur tout au long de la fonction active.Sometimes, you might want to continue your debugging session but advance the debugger all the way through the current function.

Appuyez sur MAJ + F11 (ou Déboguer > pas à pas sortant).Press Shift + F11 (or Debug > Step Out).

Cette commande reprend l’exécution d’application (et avance le débogueur) jusqu'à ce que retourne la fonction active.This command resumes app execution (and advances the debugger) until the current function returns.

Exécuter jusqu'au curseurRun to cursor

Arrêtez le débogueur en appuyant sur la arrêter le débogage bouton rouge arrêter le débogage ou MAJ + F5.Stop the debugger by pressing the Stop Debugging red button Stop Debugging or Shift + F5.

Cliquez sur une ligne de code dans votre application et choisissez exécuter jusqu’au curseur.Right-click a line of code in your app and choose Run to Cursor. Cette commande démarre le débogage et définit un point d’arrêt temporaire sur la ligne de code active.This command starts debugging and sets a temporary breakpoint on the current line of code.

Exécuter jusqu’au curseurRun to Cursor

Si vous avez défini des points d’arrêt, le débogueur s’arrête sur le premier point d’arrêt il atteint.If you have set breakpoints, the debugger pauses on the first breakpoint that it hits.

Appuyez sur F5 jusqu'à ce que vous atteigniez la ligne de code où vous avez sélectionné exécuter jusqu’au curseur.Press F5 until you reach the line of code where you selected Run to Cursor.

Cette commande est utile lorsque vous modifiez du code et que vous souhaitez définir un point d’arrêt temporaire rapidement et de démarrer le débogueur en même temps.This command is useful when you are editing code and want to quickly set a temporary breakpoint and start the debugger at the same time.

Note

Vous pouvez utiliser exécuter jusqu’au curseur dans le pile des appels fenêtre pendant le débogage.You can use Run to Cursor in the Call Stack window while you are debugging.

Redémarrez votre application rapidementRestart your app quickly

Cliquez sur le redémarrer redémarrer une application bouton dans la barre d’outils déboguer (Ctrl + Maj + F5).Click the Restart Restart App button in the Debug Toolbar (Ctrl + Shift +F5).

Quand vous appuyez sur redémarrer, il fait gagner du temps par rapport à l’arrêt de l’application et de redémarrer le débogueur.When you press Restart, it saves time versus stopping the app and restarting the debugger. Le débogueur s’arrête sur le premier point d’arrêt est atteint par l’exécution de code.The debugger pauses at the first breakpoint that is hit by executing code.

Si vous ne souhaitez pas arrêter le débogueur et revenir à l’éditeur de code, vous pouvez appuyer sur le taquet rouge arrêter le débogage bouton au lieu de redémarrer.If you do want to stop the debugger and get back into the code editor, you can press the red stop Stop Debugging button instead of Restart.

Inspecter des variables avec des bulles d’informationsInspect variables with data tips

Maintenant que vous connaissez un peu à votre rythme, vous avez une bonne occasion pour commencer à examiner l’état de votre application (variables) avec le débogueur.Now that you know your way around a little, you have a good opportunity to start inspecting your app state (variables) with the debugger. Les fonctionnalités qui vous permettent d’inspecter les variables sont quelques-unes des fonctionnalités plus utiles du débogueur, et il existe différentes manières de procéder.Features that allow you to inspect variables are some of the most useful features of the debugger, and there are different ways to do it. Souvent, lorsque vous essayez de déboguer un problème, vous essayez de déterminer si les variables sont stocker les valeurs que vous attendez d’elles dans un état d’application particulier.Often, when you try to debug an issue, you are attempting to find out whether variables are storing the values that you expect them to have in a particular app state.

Pendant la suspension dans le débogueur, placez le curseur sur un objet avec la souris et que sa valeur de propriété par défaut (dans cet exemple, le nom de fichier market 031.jpg est la valeur de propriété par défaut).While paused in the debugger, hover over an object with the mouse and you see its default property value (in this example, the file name market 031.jpg is the default property value).

Afficher une bulleView a Data Tip

Développez l’objet pour voir toutes ses propriétés (telles que le FullPath propriété dans cet exemple).Expand the object to see all its properties (such as the FullPath property in this example).

Souvent, lors du débogage, vous souhaitez un moyen rapide de vérifier les valeurs de propriété sur les objets et les conseils de données constituent un bon moyen de le faire.Often, when debugging, you want a quick way to check property values on objects, and the data tips are a good way to do it.

Conseil

Dans les langues prises en charge de plus, vous pouvez modifier le code au milieu d’une session de débogage.In most supported languages, you can edit code in the middle of a debugging session. Pour plus d’informations, consultez Modifier & Continuer.For more info, see Edit and Continue.

Inspecter des variables avec les fenêtres automatique et variables localesInspect variables with the Autos and Locals windows

Pendant le débogage, examinez le automatique fenêtre en bas de l’éditeur de code.While debugging, look at the Autos window at the bottom of the code editor.

Automatique fenêtreAutos Window

Dans le automatique , vous devez voir variables le long de leur valeur actuelle et leur type.In the Autos window, you see variables along with their current value and their type. Le automatique fenêtre affiche toutes les variables utilisées dans la ligne actuelle ou de la ligne précédente (en C++, la fenêtre affiche les variables dans les trois lignes de code précédents.The Autos window shows all variables used on the current line or the preceding line (In C++, the window shows variables in the preceding three lines of code. Consultez la documentation pour le comportement spécifique à la langue).Check documentation for language-specific behavior).

Note

Dans JavaScript, le variables locales fenêtre est pris en charge, mais pas le automatique fenêtre.In JavaScript, the Locals window is supported but not the Autos window.

Ensuite, examinons le variables locales fenêtre.Next, look at the Locals window. Le variables locales fenêtre vous montre les variables qui sont actuellement dans la portée.The Locals window shows you the variables that are currently in scope.

Fenêtre variables localesLocals Window

Dans cet exemple, le this objet et l’objet f sont dans la portée.In this example, the this object and the object f are in scope. Pour plus d’informations, consultez inspecter des Variables dans le Windows de variables locales et automatique.For more info, see Inspect Variables in the Autos and Locals Windows.

Définir un espionSet a watch

Vous pouvez utiliser un espion fenêtre pour spécifier une variable (ou une expression) que vous souhaitez garder un œil sur.You can use a Watch window to specify a variable (or an expression) that you want to keep an eye on.

Pendant le débogage, cliquez sur un objet et choisissez ajouter un espion.While debugging, right-click an object and choose Add Watch.

Fenêtre EspionWatch Window

Dans cet exemple, vous avez un espion défini sur le f objet et vous pouvez voir sa valeur changent à mesure que vous parcourez le débogueur.In this example, you have a watch set on the f object, and you can see its value change as you move through the debugger. Contrairement à d’autres fenêtres de variables, le espion windows toujours affichent les variables que vous surveillez (elles sont grisées lorsque hors de portée).Unlike the other variable windows, the Watch windows always show the variables that you are watching (they're grayed out when out of scope).

Pour plus d’informations, consultez définir un espion à l’aide d’espion et Espion express WindowsFor more info, see Set a Watch using the Watch and QuickWatch Windows

Examiner la pile des appelsExamine the call stack

Cliquez sur le pile des appels fenêtre pendant le débogage, ce qui est par défaut ouvert dans le volet inférieur droit.Click the Call Stack window while you are debugging, which is by default open in the lower right pane.

Examiner la pile des appelsExamine the Call Stack

Le pile des appels fenêtre indique l’ordre dans lequel les méthodes et les fonctions sont bien appelées.The Call Stack window shows the order in which methods and functions are getting called. La première ligne affiche la fonction active (la Update méthode dans cet exemple).The top line shows the current function (the Update method in this example). La deuxième ligne montre que Update a été appelée à partir de la Path.set propriété et ainsi de suite.The second line shows that Update was called from the Path.set property, and so on. La pile des appels est un bon moyen d’examiner et de comprendre le flux d’exécution d’une application.The call stack is a good way to examine and understand the execution flow of an app.

Note

Le pile des appels est identique à la perspective de débogage dans certains IDE comme Eclipse.The Call Stack window is similar to the Debug perspective in some IDEs like Eclipse.

Vous pouvez double-cliquer sur une ligne de code revenir sur ce code source et qui modifie également la portée actuelle est inspectée par le débogueur.You can double-click a line of code to go look at that source code and that also changes the current scope being inspected by the debugger. Cela n’avance pas le débogueur.This does not advance the debugger.

Vous pouvez également utiliser les menus contextuels à partir de la pile des appels fenêtre pour faire autre chose.You can also use right-click menus from the Call Stack window to do other things. Par exemple, vous pouvez insérer des points d’arrêt dans des fonctions spécifiques, redémarrez votre application à l’aide exécuter jusqu’au curseuret accéder à examiner le code source.For example, you can insert breakpoints into specific functions, restart your app using Run to Cursor, and to go examine source code. Consultez Comment : examiner la pile des appels.See How to: Examine the Call Stack.

Examiner une exceptionExamine an exception

Lorsque votre application lève une exception, le débogueur vous amène directement à la ligne de code qui a levé l’exception.When your app throws an exception, the debugger takes you to the line of code that threw the exception.

Assistance d’exceptionException Helper

Dans cet exemple, le assistance d’Exception vous montre une System.Argument exception et un message d’erreur indiquant que le chemin d’accès n’est pas une forme conforme.In this example, the Exception Helper shows you a System.Argument exception and an error message that says that the path is not a legal form. Par conséquent, nous savons que l’erreur s’est produite sur un argument de méthode ou fonction.So, we know the error occurred on a method or function argument.

Dans cet exemple, le DirectoryInfo appelle a donné l’erreur sur la chaîne vide, stockée dans le value variable.In this example, the DirectoryInfo call gave the error on the empty string stored in the value variable.

L’assistance de l’Exception est une fonctionnalité intéressante qui peut vous aider à déboguer les erreurs.The Exception Helper is a great feature that can help you debug errors. Vous pouvez également effectuer des opérations comme vue Détails de l’erreur et ajouter un espion à partir de l’assistance de l’Exception.You can also do things like view error details and add a watch from the Exception Helper. Ou, si nécessaire, vous pouvez modifier les conditions pour lever l’exception particulière.Or, if needed, you can change conditions for throwing the particular exception.

Note

L’assistance d’Exception remplace l’Assistant Exception dans Visual Studio 2017Visual Studio 2017.The Exception Helper replaces the Exception Assistant in Visual Studio 2017Visual Studio 2017.

Développez le paramètres d’Exception nœud pour afficher davantage d’options sur la gestion de ce type d’exception, mais vous n’avez pas besoin de modifier quoi que ce soit pour cette visite guidée !Expand the Exception Settings node to see more options on how to handle this exception type, but you don't need to change anything for this tour!

Déboguer des applications ASP.NET en production dans Azure App ServiceDebug live ASP.NET apps in Azure App Service

le débogueur de capture instantanée prend un instantané de vos applications de production lors de l’exécution de code qui vous intéresse.the Snapshot Debugger takes a snapshot of your in-production apps when code that you are interested in executes. Pour indiquer au débogueur de prendre une capture instantanée, vous définissez des points d’ancrage et des points de journalisation dans votre code.To instruct the debugger to take a snapshot, you set snappoints and logpoints in your code. Dans le débogueur, vous pouvez voir précisément à quel endroit le code ne s’est pas exécuté correctement, sans que cela impacte le trafic de votre application en production.The debugger lets you see exactly what went wrong, without impacting traffic of your production application. Snapshot Debugger peut vous aider à résoudre beaucoup plus vite les problèmes rencontrés dans les environnements de production.The Snapshot Debugger can help you dramatically reduce the time it takes to resolve issues that occur in production environments.

Lancer le débogueur de capture instantanéeLaunch the snapshot debugger

Collecte de captures instantanées est disponible pour les applications ASP.NET exécutées dans Azure App Service.Snapshot collection is available for ASP.NET applications running in Azure App Service. Les applications ASP.NET doivent s’exécuter sur .NET Framework 4.6.1 ou version ultérieure, et les applications ASP.NET Core doivent s’exécuter sur .NET Core 2.0 ou version ultérieure sur Windows.ASP.NET applications must be running on .NET Framework 4.6.1 or later, and ASP.NET Core applications must be running on .NET Core 2.0 or later on Windows.

Pour plus d’informations, consultez déboguer des applications ASP.NET en production à l’aide du débogueur de capture instantanée.For more information, see Debug live ASP.NET apps using the Snapshot Debugger.

Afficher les instantanés en arrière IntelliTrace (Visual Studio Enterprise)View snapshots with IntelliTrace step-back (Visual Studio Enterprise)

En arrière IntelliTrace prend automatiquement un instantané de votre application à chaque point d’arrêt et le débogueur événement d’étape.IntelliTrace step-back automatically takes a snapshot of your application at every breakpoint and debugger step event. Les captures instantanées enregistrées vous permettent de revenir à des étapes ou points d’arrêt précédents pour afficher un état antérieur de l’application.The recorded snapshots enable you to go back to previous breakpoints or steps and view the state of the application as it was in the past. Le retour en arrière IntelliTrace peut vous faire gagner du temps quand vous souhaitez afficher un état précédent de l’application sans avoir à redémarrer le débogage ou à recréer l’état de l’application souhaité.IntelliTrace step-back can save you time when you want to see the previous application state but don't want to restart debugging or recreate the desired app state.

Vous pouvez parcourir et afficher les captures instantanées à l’aide des boutons Étape précédente et Étape suivante situés dans la barre d’outils de débogage.You can navigate and view snapshots by using the Step Backward and Step Forward buttons in the Debug toolbar. Utilisez ces boutons pour accéder aux événements figurant sous l’onglet Événements de la fenêtre Outils de diagnostic.These buttons navigate the events that appear in the Events tab in the Diagnostic Tools window.

Étape vers l’arrière et vers l’avantStep Backward and Forward Buttons

Pour plus d’informations, consultez la page Afficher des captures instantanées avec le retour en arrière IntelliTrace.For more information, see the View snapshots using IntelliTrace step-back page.

Étapes suivantesNext steps

Dans ce tutoriel, vous avez vu rapidement de nombreuses fonctionnalités du débogueur.In this tutorial, you've had a quick look at many debugger features. Vous pouvez voir ces fonctionnalités plus en détail avec un exemple d’applicationYou may want a more in-depth look at these features using a sample application