Débogage avec Visual Studio pour MacDebugging with Visual Studio for Mac

Visual Studio pour Mac offre aux débogueurs la prise en charge des applications .NET Core, .NET Framework, Unity et Xamarin.Visual Studio for Mac has debuggers with support for .NET Core, .NET Framework, Unity, and Xamarin applications.

Visual Studio pour Mac utilise le débogueur Mono Soft, qui est implémenté dans le runtime Mono, ce qui permet de Visual Studio pour Mac de déboguer du code managé sur toutes les plateformes.Visual Studio for Mac uses the Mono Soft Debugger, which is implemented into the Mono runtime, allowing Visual Studio for Mac to debug managed code across all platforms.

Le débogueurThe Debugger

Visual Studio pour Mac utilise le débogueur Mono Soft pour déboguer le code managé (C# ou F#) dans toutes les applications Xamarin.Visual Studio for Mac uses the Mono Soft Debugger to debug managed (C# or F#) code in all Xamarin applications. Le débogueur mono soft est différent des débogueurs normaux, car il s’agit d’un débogueur coopératif qui est intégré au runtime mono. le code généré et le runtime mono coopèrent avec l’IDE pour fournir une expérience de débogage.The Mono Soft debugger is different from regular debuggers in that it is a cooperative debugger that is built into the Mono runtime; the generated code and Mono runtime cooperate with the IDE to provide a debugging experience. Le runtime Mono expose les fonctionnalités de débogage via un protocole connecté, sur lequel vous pouvez trouver plus d’informations dans la documentation Mono.The Mono runtime exposes the debugging functionality through a wire protocol, which you can read more about in the Mono documentation.

Les débogueurs « durs », comme LLDB ou GDB, contrôlent un programme sans connaissance ou coopération du programme débogué, mais ils peuvent néanmoins être utiles lors du débogage d’applications de Xamarin dans le cas où vous devez déboguer du code iOS ou Android natif.Hard debuggers, such as LLDB or GDB, control a program without the knowledge or cooperation from the debugged program, but can still be useful when debugging Xamarin applications in the event that you need to debug native iOS or Android code.

Pour les applications .NET Core et ASP.NET Core, Visual Studio pour Mac utilise le débogueur .NET Core.For .NET Core and ASP.NET Core applications, Visual Studio for Mac uses the .NET Core debugger. Ce débogueur est également un débogueur coopératif et fonctionne avec le Runtime .NET.This debugger is also a cooperative debugger and works with the .NET runtime.

Utilisation du débogueurUsing the debugger

Pour démarrer le débogage d’une application, vérifiez toujours que la configuration est définie sur Debug.To start debugging any application, always ensure that the configuration is set to Debug. La configuration Debug fournit un ensemble pratique d’outils pour prendre en charge le débogage, comme les points d’arrêt, l’utilisation de visualiseurs de données et l’affichage de la pile des appels :The debug configuration provides a helpful set of tools to support debugging, such as breakpoints, using data visualizers, and viewing the call stack:

Configuration Debug

Définition d'un point d'arrêtSetting a breakpoint

Pour définir un point d’arrêt dans votre IDE, cliquez sur la zone de marge de votre éditeur, en regard du numéro de ligne où vous voulez marquer un arrêt :To set a breakpoint in your IDE, click on the margin area of your editor, next to the line number of the code where you wish to break:

Définition d’un point d’arrêt dans la marge

Vous pouvez afficher tous les points d’arrêt qui ont été définis dans votre code en accédant à la fenêtre points d’arrêt :You can view all the breakpoints that have been set in your code by going to the Breakpoints Window :

Liste des points d’arrêt

Démarrer le débogageStart debugging

Pour démarrer le débogage, sélectionnez le navigateur, l’appareil ou le simulateur/émulateur cible :To start debugging, select the target browser, device, or simulator/emulator:

Configuration de débogage  Sélectionner un appareil cibleDebug configuration Select target device

Ensuite, déployez votre application en cliquant sur le bouton Lecture ou en appuyant sur Cmd+Entrée.Then deploy your application by pressing the Play button, or Cmd + return. Quand vous atteignez un point d’arrêt, le code est mis en surbrillance en jaune :When you hit a breakpoint, the code will be highlighted yellow:

Mise en surbrillance montrant que le point d’arrêt a été atteint

Des outils de débogage, comme celui utilisé pour inspecter les valeurs des objets, peuvent être utilisés à ce stade pour obtenir plus d’informations sur ce qui se passe dans votre code :Debugging tools, such as the one used to inspect the values of objects, can be used at this point to get more information about what is happening in your code:

Visualisations du débogage

Points d’arrêt conditionnelsConditional breakpoints

Vous pouvez également définir des règles spécifiant les circonstances dans lesquelles un point d’arrêt doit se produire : on parle alors de l’ajout d’un point d’arrêt conditionnel.You can also set rules dictating the circumstances under which a breakpoint should occur, this is known as adding a conditional breakpoint. Pour définir un point d’arrêt conditionnel, accédez à la fenêtre Propriétés de point d’arrêt , ce que vous pouvez faire de deux façons :To set a conditional breakpoint, access the Breakpoint Properties window , which can be done in two ways:

  • Pour ajouter un nouveau point d’arrêt conditionnel, cliquez avec le bouton droit sur la marge de l’éditeur, à gauche du numéro de la ligne de code pour laquelle vous voulez définir un point d’arrêt, et sélectionnez Nouveau point d’arrêt :To add a new conditional breakpoint, right-click on the editor margin, to the left of the line number for the code you wish to set a breakpoint on, and select New Breakpoint:

Menu contextuel Point d'arrêt

  • Pour ajouter une condition à un point d’arrêt existant, cliquez avec le bouton droit sur le point d’arrêt et sélectionnez Propriétés du point d’arrêt, ou dans la fenêtre points d’arrêt, sélectionnez le bouton modifier le point d’arrêt illustré ci-dessous :To add a condition to an existing breakpoint, right-click on the breakpoint and select Breakpoint Properties , or, in the Breakpoints Window , select the Edit Breakpoint button illustrated below:

Modifier le point d’arrêt existant dans la fenêtre points d’arrêt

Vous pouvez ensuite entrer la condition selon laquelle vous voulez que le point d’arrêt se produise :You can then enter the condition under which you want the breakpoint to occur:

Modifier les conditions d’un point d’arrêt

Exécution de code pas à pasStepping through code

Quand un point d’arrêt a été atteint, les outils de débogage vous permettent de prendre le contrôle de l’exécution du programme.When a breakpoint has been reached, the Debug tools enable you to get control over the program's execution. Visual Studio pour Mac affiche quatre boutons, qui vous permettent d’exécuter le code pas à pas.Visual Studio for Mac will display four buttons, allowing you to run and step through the code. Dans Visual Studio pour Mac, ils se présentent comme ceci :In Visual Studio for Mac, they will look like the following:

Boutons pour parcourir le code pas à pas

Voici les quatre boutons :Here are the four buttons:

  • Lecture  : commence l’exécution du code, jusqu’au point d’arrêt suivant.Play - This will begin executing the code, until the next breakpoint.
  • Pas à pas principal : cette opération exécute la ligne de code suivante.Step Over - This will execute the next line of code. Si la ligne suivante est un appel de fonction, pas à pas principal exécute la fonction et s’arrête à la ligne de code suivante après la fonction.If the next line is a function call, Step Over will execute the function, and will stop at the next line of code after the function.
  • Pas à pas détaillé : cette opération exécute également la ligne de code suivante.Step Into - This will also execute the next line of code. Si la ligne suivante est un appel de fonction, Pas à pas détaillé s’arrête à la première ligne de la fonction, ce qui vous permet de continuer le débogage ligne par ligne de la fonction.If the next line is a function call, Step Into will stop at the first line of the function, allowing you to continue line-by-line debugging of the function. Si la ligne suivante n’est pas une fonction, il se comporte comme Pas à pas principal.If the next line is not a function, it will behave the same as Step Over.
  • Pas à pas sortant : cette opération retourne à la ligne où la fonction active a été appelée.Step Out - This will return to the line where the current function was called.

Modifier l’instruction qui est exécutée ensuiteChange which statement is executed next

Lorsque le débogueur est suspendu, une flèche dans la marge indique la ligne de code qui sera exécutée ensuite.While the debugger is paused, an arrow in the margin shows which line of code will be executed next. Vous pouvez cliquer et faire glisser la flèche vers une autre ligne de code afin d’exécuter une autre instruction.You can click and drag the arrow to a different line of code to change which statement will be executed. Pour obtenir la même chose, vous pouvez également cliquer avec le bouton droit sur une ligne de code et sélectionner définir l’instruction suivante dans le menu contextuel.You can achieve the same thing by also right-clicking on a line of code and selecting Set Next Statement from the context menu.

Flèche glisser-déplacer pour définir l’instruction suivante

Attention

La modification de la ligne active d’exécution peut entraîner un comportement inattendu dans une application.Changing the current line of execution can cause unexpected behavior in an application. Il existe également certaines conditions dans lesquelles la modification de la prochaine instruction à exécuter n’est pas possible.There are also some conditions where changing the next statement to execute is not possible. Par exemple, si vous faites glisser la flèche d’une méthode vers une autre, cela ne fonctionnera pas.For example, dragging the arrow from one method to another method will not work. Dans ces cas non pris en charge, Visual Studio pour Mac affichera une boîte de dialogue pour vous informer qu’il n’était pas possible de modifier la ligne d’exécution active.In these unsupported cases, Visual Studio for Mac will display a dialog to let you know it was not possible to change the current line of execution.

Débogage des bibliothèques de classes de MonoDebugging Mono's class libraries

Les produits Xamarin sont livrés avec le code source pour les bibliothèques de classes de Mono, que vous pouvez utiliser pour avancer pas à pas à partir du débogueur pour examiner comment les choses fonctionnent à l’arrière-plan.Xamarin products ship with the source code for Mono's class libraries, and you can use this to single step from the debugger to inspect how things are working under the hood.

Comme cette fonctionnalité consomme plus de mémoire pendant le débogage, elle est désactivée par défaut.Since this feature consumes more memory during debugging, it is turned off by default.

Pour activer cette fonctionnalité, accédez à Visual Studio pour Mac > préférences > débogueur et assurez-vous que l’option « pas à pas détaillé du code externe » est sélectionnée , comme illustré ci-dessous :To enable this feature, browse to Visual Studio for Mac > Preferences > Debugger and ensure that the " Step into external code " option is selected , as illustrated below:

Pas à pas détaillé de l’option de code externe

Voir aussiSee also