Comment faire pour tracer et deboguer dans Visual C#

Traductions disponibles Traductions disponibles
Numéro d'article: 815788 - Voir les produits auxquels s'applique cet article
Pour obtenir une version Microsoft Visual Basic .NET de ce l'article, reportez-vous à la section 313417 .
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique comment utiliser les classes Trace et du Déboguer . Ces classes sont disponibles dans le Microsoft .NET Framework. Vous pouvez utiliser ces classes pour fournir des informations sur la performances d'une application lors du développement d'applications, ou après déploiement en production. Ces classes ne sont qu'une partie de la fonctionnalités d'instrumentation qui sont disponibles dans le.NET Framework.

Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciel, l'infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft Windows 2000 ou Microsoft Windows XP ou Microsoft Windows Server 2003
  • Microsoft Visual C#
Cet article suppose également que vous êtes familiarisé avec le programme le débogage.

Description de la Technique


Les étapes de la Créer un Exemple avec la classe Debug section montrent comment créer un application console qui utilise la classe Debug pour fournir des informations sur l'exécution du programme.

Lorsque le programme est exécuté, vous pouvez utiliser les méthodes de la classe Debug pour produire des messages qui vous aident à surveiller le programme séquence d'exécution, afin de détecter tout dysfonctionnement ou pour fournir des performances informations de mesure. Par défaut, les messages qui génère la classe Debug apparaissent dans la fenêtre de sortie de la Visual Studio Environnement de développement intégré (IDE).

L'exemple de code utilise la méthode WriteLine pour produire un message suivi d'une ligne marque de fin. Lorsque vous utilisez cette méthode pour produire un message, chaque message s'affiche sur une ligne distincte dans la fenêtre Sortie.

Lorsque vous utilisez la méthode Assert de la classe Debug , la fenêtre Sortie affiche un message uniquement si un texte spécifié condition a la valeur false. Le message s'affiche également dans la boîte de dialogue modale à l'utilisateur. La boîte de dialogue contient le message, le nom du projet et le numéro de relevé Debug.Assert . La boîte de dialogue inclut également les éléments suivants trois boutons de commande :
  • Abandonner : Arrêt de l'application.
  • Nouvelle tentative : L'application passe en mode débogage.
  • Ignorer : L'application se poursuit.
L'utilisateur doit cliquer sur un de ces boutons avant l'application peut continuer.

Vous pouvez également diriger la sortie de la classe Debug vers les destinations de la fenêtre Sortie. La classe Debug possède une collection nommée Listeners qui inclut les objets Listener .

Chaque objet écouteur surveille la sortie de débogage et dirige la sortie vers une cible spécifiée.

Chaque écouteur dans la collection d'écouteurs ne reçoive la sortie qui génère la classe Debug . Utilisez la classe TextWriterTraceListener pour définir les objets écouteur . Vous pouvez spécifier la cible d'une classe TextWriterTraceListener via son constructeur.

Une sortie possible cibles sont les suivants :
  • La fenêtre de Console à l'aide de la propriété System.Console.Out .
  • Un fichier texte (.txt) à l'aide de l'instruction System.IO.File.CreateText("FileName.txt") .
Après avoir créé un objet TextWriterTraceListener , vous devez ajouter l'objet à la collection Debug.Listeners pour recevoir la sortie de débogage.

Créer un exemple avec la classe Debug

  1. Démarrez Visual Studio ou Visual C# Express Edition.
  2. Créez un nouveau projet Application Console Visual C# nommé conInfo. Class1 est créé dans Visual Studio .NET. Program.cs est créé dans Visual Studio 2005.
  3. En haut dans Class1 ou Program.cs, ajoutez l'espace de noms suivant.
    using System.Diagnostics;
  4. Pour initialiser des variables pour contenir des informations sur un produit, ajoutez les instructions de déclaration suivantes à la méthode Main :
    string sProdName = "Widget";
    int iUnitQty = 100;
    double dUnitCost = 1.03;
  5. Spécifier le message qui génère la classe que le premier paramètre d'entrée de la méthode WriteLine . Appuyez sur la combinaison de touches CTRL + ALT + O pour s'assurer que la fenêtre sortie est visible.
    Debug.WriteLine("Debug Information-Product Starting ");
  6. Pour une meilleure lisibilité, utilisez la méthode de retrait pour mettre en retrait les messages suivants dans la fenêtre Sortie :
    Debug.Indent();
  7. Pour afficher le contenu des variables sélectionnées, utilisez la méthode WriteLine comme suit :
    Debug.WriteLine("The product name is " + sProdName);
    Debug.WriteLine("The available units on hand are" + iUnitQty.ToString());
    Debug.WriteLine("The per unit cost is " + dUnitCost.ToString());
  8. Vous pouvez également utiliser la méthode WriteLine pour afficher l'espace de noms et le nom de classe pour un objet existante. Par exemple, le code suivant affiche l'espace de noms System.Xml.XmlDocument dans la fenêtre Sortie :
    System.Xml.XmlDocument oxml = new System.Xml.XmlDocument();
    Debug.WriteLine(oxml);
  9. Pour organiser la sortie, vous pouvez inclure une catégorie comme un facultatif, deuxième paramètre d'entrée de la méthode WriteLine . Si vous spécifiez une catégorie, le format de sortie message de fenêtre est « catégorie : message. " Par exemple, la première ligne de la suivant le code affiche « champ : le nom du produit est Widget » dans la sortie fenêtre :
    Debug.WriteLine("The product name is " + sProdName,"Field");
    Debug.WriteLine("The units on hand are" + iUnitQty,"Field");
    Debug.WriteLine("The per unit cost is" + dUnitCost.ToString(),"Field");
    Debug.WriteLine("Total Cost is  " + (iUnitQty * dUnitCost),"Calc");
  10. La fenêtre sortie peut afficher des messages uniquement si un condition spécifiée a la valeur true à l'aide de la méthode WriteLineIf de la classe Debug . La condition à évaluer est le premier paramètre d'entrée de la méthode WriteLineIf . Le deuxième paramètre de WriteLineIf est le message qui s'affiche uniquement si la condition dans la première paramètre a la valeur true.
    Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear");
    Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear");
    
  11. Utilisez la méthode Assert de la classe Debug afin que la fenêtre Sortie affiche l'uniquement si de message un condition spécifiée a la valeur false :
    Debug.Assert(dUnitCost > 1, "Message will NOT appear");
    Debug.Assert(dUnitCost < 1, "Message will appear since dUnitcost < 1 is false");
    
  12. Créer les objets écouteur TextWriterTraceListener pour la fenêtre de Console (tr1) et un fichier texte nommé Output.txt (tr2), puis ajoutez chaque objet à la collection Listeners de déboguer :
    TextWriterTraceListener tr1 = new TextWriterTraceListener(System.Console.Out);
    Debug.Listeners.Add(tr1);
            
    TextWriterTraceListener tr2 = new TextWriterTraceListener(System.IO.File.CreateText("Output.txt"));
    Debug.Listeners.Add(tr2);
  13. Pour une meilleure lisibilité, utilisez la méthode Unindent pour supprimer la mise en retrait pour les messages ultérieurs la Génère de la classe Debug . Lorsque vous utilisez le tiret et les méthodes Unindent ensemble, le lecteur peut distinguer la sortie en tant que groupe.
    Debug.Unindent();
    Debug.WriteLine("Debug Information-Product Ending");
  14. Pour vous assurer que chaque objet écouteur reçoit tous les sa sortie, appelez la méthode Flush pour les tampons de classe Debug :
    Debug.Flush();

À l'aide de la classe Trace

Vous pouvez également utiliser la classe Trace pour produire des messages qui surveillent l'exécution d'une application. Les classes Trace et Debug partagent la plupart des méthodes pour produire une sortie, y compris les éléments suivants :
  • WriteLine
  • WriteLineIf
  • Tiret
  • Unindent
  • Assert
  • Flush
Vous pouvez utiliser les classes Debug et la Trace séparément ou ensemble dans la même application. Dans un Déboguer le projet de Configuration de Solution, sortie de Trace et de débogage sont actifs. Le projet génère la sortie à partir des deux Ces classes à tous les objets écouteur . Toutefois, une Configuration de Solution version projet uniquement génère la sortie d'une classe de Trace . Le projet de Configuration de Solution version ignore les appels de méthode de classe Debug .
Trace.WriteLine("Trace Information-Product Starting ");
Trace.Indent();

Trace.WriteLine("The product name is "+sProdName);
Trace.WriteLine("The product name is"+sProdName,"Field" );
Trace.WriteLineIf(iUnitQty > 50, "This message WILL appear");
Trace.Assert(dUnitCost > 1, "Message will NOT appear");
        
Trace.Unindent();
Trace.WriteLine("Trace Information-Product Ending");

Trace.Flush();

Console.ReadLine();

Vérifiez qu'il fonctionne

  1. Assurez-vous que le débogage est la configuration de solution en cours.
  2. Si le L'Explorateur de solutions fenêtre n'est pas visible, appuyez sur la combinaison de touches CTRL + ALT + L pour afficher ce fenêtre.
  3. Avec le bouton droit conInfo, puis cliquez surPropriétés.
  4. Dans le volet gauche de la page de propriété conInfo, sous leConfiguration dossier, assurez-vous que la flèche pointe versDébogage.

    Remarque : Dans Visual C# 2005 et Visual C# 2005 Express Edition, cliquez sur Débogage dans le conInfo page.
  5. Au-dessus de la Configuration dossier, dans leConfiguration zone de liste déroulante, cliquez sur Active (Debug) ou Débogage, puis cliquez surOK. Dans Visual C# 2005 et Visual C# 2005 Express Edition, cliquez sur Active (Debug) ou Débogage dans le Configuration zone de liste déroulante dans le Débogage page, puis cliquez sur Enregistrer sur la Fichier menu.
  6. Appuyez sur CTRL + ALT + O pour afficher la fenêtre Sortie.
  7. Appuyez sur la touche F5 pour exécuter le code. Lors de laÉchoué de l'assertion boîte de dialogue s'affiche, cliquez surIgnorer.
  8. Dans la fenêtre de Console, appuyez sur ENTRÉE. Le programme doit Terminer et la fenêtre sortie doivent afficher le résultat semblable au suivant
        Debug Information-Product Starting 
        The product name is Widget
        The available units on hand are100
        The per unit cost is 1.03
        System.Xml.XmlDocument
        Field: The product name is Widget
        Field: The units on hand are100
        Field: The per unit cost is1.03
        Calc: Total Cost is  103
        This message WILL appear
        ---- DEBUG ASSERTION FAILED ----
    ---- Assert Short Message ----
    Message will appear since dUnitcost  < 1 is false
    ---- Assert Long Message ----
    
    
        at Class1.Main(String[] args)  <%Path%>\class1.cs(34)
    
        The product name is Widget
        The available units on hand are100
        The per unit cost is 1.03
    Debug Information-Product Ending
    Trace Information-Product Starting 
        The product name is Widget
        Field: The product name isWidget
        This message WILL appear
    Trace Information-Product Ending
                        
    
  9. La fenêtre de Console et le fichier Output.txt doivent s'afficher la sortie suivante :
    The product name is Widget
        The available units on hand are 100
        The per unit cost is 1.03
    Debug Information-Product Ending
    Trace Information-Product Starting 
        The product name is Widget
        Field: The product name is Widget
        This message WILL appear
    Trace Information-Product Ending			
    
Remarque : Le fichier Output.txt se trouve dans le même répertoire que le conInfo exécutable (conInfo.exe). En général, c'est le dossier \bin dans lequel la la source du projet est stockée. Par défaut, c'est C:\Documents and Settings\Utilisateur ouverture de session\My Documents\Visual studio Projects\conInfo\bin. Dans Visual C# 2005 et Visual C# 2005 Express Edition, le fichier Output.txt se trouve dans le dossier suivant :
C:\Documents and Settings\Connexion de l'utilisateur\My Documents\Visual studio 2005\Projects\conInfo\conInfo\bin\Debug


Code complet Mise en vente

   using System;
   using System.Diagnostics;

   class Class1
   {
      [STAThread]
      static void Main(string[] args)
      {
         string sProdName = "Widget";
         int iUnitQty = 100;
         double  dUnitCost = 1.03;
         Debug.WriteLine("Debug Information-Product Starting ");
         Debug.Indent();
         Debug.WriteLine("The product name is "+sProdName);
         Debug.WriteLine("The available units on hand are"+iUnitQty.ToString());
         Debug.WriteLine("The per unit cost is "+ dUnitCost.ToString());

         System.Xml.XmlDocument oxml = new System.Xml.XmlDocument();
         Debug.WriteLine(oxml);

         Debug.WriteLine("The product name is "+sProdName,"Field");
         Debug.WriteLine("The units on hand are"+iUnitQty,"Field");
         Debug.WriteLine("The per unit cost is"+dUnitCost.ToString(),"Field");
         Debug.WriteLine("Total Cost is  "+(iUnitQty * dUnitCost),"Calc");

         Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear");
         Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear");

         Debug.Assert(dUnitCost > 1, "Message will NOT appear");
         Debug.Assert(dUnitCost < 1, "Message will appear since dUnitcost  < 1 is false");

         TextWriterTraceListener tr1 = new TextWriterTraceListener(System.Console.Out);
         Debug.Listeners.Add(tr1);
        
         TextWriterTraceListener tr2 = new TextWriterTraceListener(System.IO.File.CreateText("Output.txt"));
         Debug.Listeners.Add(tr2);
         
 
         Debug.WriteLine("The product name is "+sProdName);
         Debug.WriteLine("The available units on hand are"+iUnitQty);
         Debug.WriteLine("The per unit cost is "+dUnitCost);
         Debug.Unindent();
         Debug.WriteLine("Debug Information-Product Ending");
         Debug.Flush();
         
         Trace.WriteLine("Trace Information-Product Starting ");
         Trace.Indent();

         Trace.WriteLine("The product name is "+sProdName);
         Trace.WriteLine("The product name is"+sProdName,"Field" );
         Trace.WriteLineIf(iUnitQty > 50, "This message WILL appear");
         Trace.Assert(dUnitCost > 1, "Message will NOT appear");
        

         Trace.Unindent();
         Trace.WriteLine("Trace Information-Product Ending");

         Trace.Flush();

         Console.ReadLine();
      }			
   }


Résoudre les problèmes

  • Si le type de configuration de solution est la version, la sortie de débogage de classe est ignorée.
  • Après avoir créé une classe TextWriterTraceListener pour une cible particulière, l'écouteur TextWriterTraceListener reçoit les sorties de la Trace et les classes Debug . Dans ce cas que vous utilisiez la méthode Add de la Trace ou de la classe Debug pour ajouter l'écouteur TextWriterTraceListener à la classe d'écouteurs .
  • Si vous ajoutez un objet d'écouteurs pour la même cible dans la Trace et les classes Debug , chaque ligne de sortie est dupliqué, quel que soit Debug ou Trace génère la sortie.
             TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
             Debug.Listeners.Add(myWriter);
            
             TextWriterTraceListener myCreator = new TextWriterTraceListener(System.Console.Out);
             Trace.Listeners.Add(myCreator);
             
    

Références

Pour plus d'informations, consultez les rubriques suivantes dans le .NET Documentation de bibliothèque de classes Framework :
Trace (classe)
http://msdn2.Microsoft.com/en-us/library/System.Diagnostics.trace (vs.71) .aspx

Debug, classe
http://msdn2.Microsoft.com/en-us/library/System.Diagnostics.Debug (vs.71) .aspx

Propriétés

Numéro d'article: 815788 - Dernière mise à jour: vendredi 5 avril 2013 - Version: 6.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2003 Initiation
  • Microsoft Visual C# .NET 2002 Initiation
Mots-clés : 
kbprogramming kbdebug kbnamespace kbhowtomaster kbmt KB815788 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 815788
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com