Partager via


Informations de journal dans la fenêtre Sortie à l’aide de points de trace dans Visual Studio

Les points de trace vous permettent de consigner des informations dans la fenêtre Sortie dans des conditions configurables sans modifier ou arrêter votre code. Cette fonctionnalité est prise en charge pour les deux langages managés (C#, Visual Basic, F#) et le code natif, ainsi que pour les langages tels que JavaScript et Python.

Note

Pour plus d’informations sur la journalisation des informations dans la fenêtre Sortie par programmation à l’aide d’API .NET, consultez Envoyer des messages à la fenêtre Sortie.

Prenons un exemple

L’exemple de programme suivant est une boucle simple for avec une variable de compteur qui augmente d’une fois que la boucle exécute une autre itération.


using System.Diagnostics;

namespace Tracepoints
{
    public class Program
    {
        public static void Main(string[] args)
        {
            int counter = 0;
            for (int i=0; i<=10; i++)
            {
                counter +=1;
            }
        }
    }
}

Définir des points de trace dans le code source

Vous pouvez définir des points de trace en spécifiant une chaîne de sortie sous la case Action dans la fenêtre Paramètres du point d’arrêt.

  1. Pour initialiser un point de trace, cliquez d’abord sur la coupe à gauche du numéro de ligne où vous souhaitez définir le point de trace.

    Capture d’écran montrant l’initialisation du point d’arrêt dans l’exemple de code.

  2. Pointez sur le cercle rouge et cliquez sur l’icône d’engrenage pour ouvrir la fenêtre Paramètres du point d’arrêt.

    Capture d’écran montrant la fenêtre Point d’arrêt.

  3. Cochez la case Action .

    Capture d’écran de la fenêtre point d’arrêt avec la case Actions activée.

    Notez comment le cercle rouge passe à un diamant indiquant que vous avez basculé d’un point d’arrêt vers un point de trace.

  4. Entrez le message que vous souhaitez vous connecter à la zone de texte Afficher un message dans la fenêtre de sortie (pour plus d’informations, consultez les sections ultérieures de cet article).

    Votre point de trace est maintenant défini. Appuyez sur le bouton « Fermer » si vous souhaitez enregistrer certaines informations dans la fenêtre sortie.

  5. Si vous souhaitez ajouter des conditions qui déterminent si votre message s’affiche, cochez la case Conditions .

    Capture d’écran de la fenêtre de point d’arrêt avec la case Conditions activée.

    Vous avez trois choix pour les conditions : Expression conditionnelle, Filtre et Nombre d’accès.

Menu Actions

Ce menu vous permet de consigner un message dans la fenêtre Sortie. Tapez les chaînes que vous souhaitez générer dans la zone de message (pas de guillemets nécessaires). Si vous souhaitez afficher des valeurs de variables, veillez à l’inclure dans des accolades.

Par exemple, si vous souhaitez afficher la valeur de la counter variable dans la console de sortie, tapez {counter} la zone de texte du message.

Capture d’écran montrant le message de sortie du compteur.

Si vous cliquez sur Fermer , puis déboguez le programme (F5), vous voyez la sortie suivante dans la fenêtre Sortie.

Capture d’écran montrant le message Actions dans la fenêtre sortie.

Vous pouvez également utiliser des mots clés spéciaux pour afficher des informations plus spécifiques. Entrez le mot clé exactement comme indiqué ci-dessous (utilisez un « $ » devant chaque mot clé et toutes les majuscules pour le mot clé lui-même).

Keyword Ce qui est affiché
$ADDRESS Instruction actuelle
$CALLER Nom de la fonction appelante
$CALLSTACK Pile des appels
$FUNCTION Nom de la fonction actuelle
$PID ID de processus
$PNAME Nom du processus
$TID Identifiant de fil
$TNAME Nom du thread
$TICK Nombre de graduations (à partir de Windows GetTickCount)

Menu Conditions

Les conditions vous permettent de filtrer vos messages de sortie, de sorte qu’ils s’affichent uniquement dans certains scénarios. Il existe trois types de conditions principales à votre disposition.

Expression conditionnelle

Pour une expression conditionnelle, un message de sortie s’affiche uniquement lorsque certaines conditions sont remplies.

Pour les expressions conditionnelles, vous pouvez définir le point de trace pour générer un message lorsqu’une certaine condition est vraie ou lorsqu’elle a changé. Par exemple, si vous souhaitez uniquement afficher la valeur du compteur pendant les itérations de la for boucle, vous pouvez sélectionner l’option Is true , puis taper i%2 == 0 dans la zone de texte du message.

Capture d’écran montrant l’expression conditionnelle est true.

Si vous souhaitez imprimer la valeur du compteur lorsque l’itération de la for boucle change, sélectionnez l’option When changed et tapez i la zone de texte du message.

Capture d’écran montrant quand l’expression conditionnelle est modifiée.

Le comportement de l’option When changed est différent pour différents langages de programmation.

  • Pour le code natif, le débogueur ne considère pas la première évaluation de la condition comme une modification. Par conséquent, il n’atteint pas le point de trace lors de la première évaluation.
  • Pour le code managé, le débogueur atteint le point de trace lors de la première évaluation après la sélection de la modification .

Vous pouvez également définir la condition lorsque le point de trace peut être activé en insérant un point d’arrêt dans une section particulière du code et en cochant la case Activer uniquement lorsque le point d’arrêt suivant est activé : option dans le menu Paramètres du point d’arrêt. Vous pouvez choisir n’importe quel point d’arrêt dans la liste des choix.

Capture d’écran montrant l’activation lorsqu’un point d’arrêt est activé.

Pour un examen plus complet des expressions valides que vous pouvez utiliser lors de la définition de conditions, consultez Expressions dans le débogueur.

Obtenir de l’aide sur l’IA

Si vous avez Copilot, vous pouvez obtenir de l’aide sur l’IA pendant la création d’un point de trace. Copilot vous propose des suggestions pour les points d’arrêt conditionnels et les points de trace spécifiques à votre code.

Capture d’écran de Copilot travaillant sur des suggestions de point d’arrêt conditionnel.

Pour plus d’informations, consultez Déboguer avec Copilot.

Nombre d’accès

Une condition de nombre d’accès vous permet d’envoyer la sortie uniquement après la ligne de code où le point de trace est défini a exécuté un nombre spécifié de fois.

Pour le nombre d’accès, vous pouvez choisir de générer un message lorsque la ligne de code où le point de trace est défini a été exécutée un nombre particulier de fois. Selon l’exigence, il peut être égal à, ou est un multiple, ou est supérieur ou égal à la valeur de nombre d’accès spécifiée. Choisissez l’option qui convient le mieux à vos besoins et tapez une valeur entière dans le champ (par exemple, 5) qui représente cette itération d’intérêt.

Capture d’écran montrant le nombre d’accès à l’expression conditionnelle.

Vous pouvez également supprimer le point d’arrêt sur le premier accès en activant la case à cocher Supprimer le point d’arrêt une fois atteint.

Capture d’écran montrant Supprimer le point d’arrêt lors de la première frappe.

Filter

Pour une condition de filtre, spécifiez les appareils, les processus ou les threads pour lesquels la sortie est affichée.

Capture d’écran montrant le filtre d’expression conditionnelle.

Liste des expressions de filtre :

  • MachineName = « name »
  • ProcessId = valeur
  • ProcessName = « name »
  • ThreadId = valeur
  • ThreadName = « name »

Placez des chaînes (telles que des noms) entre guillemets doubles. Les valeurs peuvent être entrées sans guillemets. Vous pouvez combiner des clauses à l’aide & de (AND), || (), OR (!NOT) et de parenthèses.

Considérations

Bien que les points de trace soient destinés à rendre le débogage plus propre et plus fluide. Il existe des considérations à prendre en compte quand il s’agit de les utiliser.

Parfois, lorsque vous inspectez une propriété ou un attribut d’un objet, sa valeur peut changer. Si la valeur change pendant l’inspection, il ne s’agit pas d’un bogue provoqué par la fonctionnalité de point de trace elle-même. Toutefois, l’utilisation de points de trace pour inspecter les objets n’évite pas ces modifications accidentelles.

La façon dont les expressions sont évaluées dans la boîte de message Action peut être différente de la langue que vous utilisez actuellement pour le développement. Par exemple, pour générer une chaîne, vous n’avez pas besoin d’encapsuler un message entre guillemets, même si vous le feriez normalement lors de l’utilisation Debug.WriteLine() ou console.log(). En outre, la syntaxe d’accolades ({ }) à des expressions de sortie peut également être différente de la convention pour la sortie des valeurs dans votre langage de développement. (Toutefois, le contenu dans les accolades ({ }) doit toujours être écrit à l’aide de la syntaxe de votre langage de développement.

Si vous essayez de déboguer une application active et que vous recherchez une fonctionnalité similaire, consultez notre fonctionnalité de point de journal dans le débogueur d’instantané. Le débogueur d’instantané est un outil utilisé pour examiner les problèmes dans les applications de production. Les points de journal vous permettent également d’envoyer des messages à la fenêtre sortie sans avoir à modifier le code source et n’affectent pas votre application en cours d’exécution. Pour plus d’informations, consultez l’application Azure en direct déboguer.