Comment trace et debug dans 2005 Visual Basic ou Visual Basic.NET

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

Sommaire

Résumé

Cet article montre comment utiliser les classes Trace et Debug . Ces classes sont disponibles dans 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
  • Microsoft Visual Basic 2005 ou Microsoft Visual Basic.NET
Cet article suppose également que vous êtes familiarisé avec le programme le débogage.

Description de la technique

Les étapes décrites dans la section « Créer un échantillon avec la classe Debug » vous montrer comment créer une console application qui utilise la classe Debug pour fournir des informations sur le programme exécution.

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

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

Si 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 apparaît é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 du relevé Debug.Assert . La boîte de dialogue contient également trois commande boutons :
  • Abandonner: les taquets d'application en cours d'exécution.
  • 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 autres que la fenêtre Sortie. La classe Debug possède une collection nommée d' écouteurs qui inclut les objets écouteur . Chaque objet Listener surveille la sortie de débogage et dirige la sortie vers une cible spécifiée. Chaque écouteur dans la collection Listeners 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. Certaines cibles de sortie possibles sont les suivantes :
  • 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 doit recevoir la sortie de débogage .

Créer un exemple avec la classe Debug

  1. Utilisez 2005 Visual Basic ou Visual Basic.NET pour créer un nouveau projet Application Console nommé conInfo. Un module public nommé Module1 est ajouté au projet par par défaut.
  2. Pour initialiser des variables pour contenir des informations sur un produit, ajoutez les instructions Dim suivantes :
    Dim sProdName As String = "Widget"
    Dim iUnitQty As Integer = 100
    Dim dUnitCost As Decimal = 1.03
    					
  3. 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 vous assurer que le Fenêtre de sortie n'est visible.
    Debug.WriteLine("Debug Information-Product Starting ")
    					
  4. Pour une meilleure lisibilité, utilisez la méthode de retrait pour mettre en retrait les messages suivants dans la fenêtre Sortie :
    Debug.Indent()
    					
  5. 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)
    Debug.WriteLine("The per unit cost is " & dUnitCost)
    					
  6. 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 :
    Dim oxml As New System.Xml.XmlDocument()
    Debug.WriteLine(oxml)
    					
  7. 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, "Field")
    Debug.WriteLine("Total Cost is" & iUnitQty * dUnitCost, "Calc")
    					
  8. La fenêtre Sortie peut afficher des messages uniquement si un désigné condition 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")
    					
  9. Utilisez la méthode Assert de la classe Debug afin que la fenêtre Sortie affiche la si seul 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")
    					
  10. 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ébogage :
    Dim tr1 As New TextWriterTraceListener(System.Console.Out)
    Debug.Listeners.Add(tr1)
            
    Dim tr2 As New _
      TextWriterTraceListener(System.IO.File.CreateText("Output.txt"))
    Debug.Listeners.Add(tr2)
    					
  11. 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")
    					
  12. Pour vous assurer que chaque objet écouteur reçoit tout de 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 :
  • 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, à la fois la Trace et Debug output sont actifs. Le projet génère une sortie de deux Ces classes à tous les objets écouteur . Toutefois, une Configuration de Solution Release du 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 la fenêtre Explorateur de solutions n'est pas visible, appuyez sur la Combinaison de touches CTRL + ALT + L pour afficher cette fenêtre.
  3. Droit conInfoet puis cliquez sur Propriétés.
  4. Dans le volet gauche de la page de propriété conInfo, sous le Dossier de configuration, assurez-vous que la flèche pointe vers le débogage.
  5. Au-dessus du dossier Configuration, dans la zone de liste déroulante Configuration , cliquez sur Active (Debug) ou débogageet puis cliquez sur OK.
  6. Appuyez sur CTRL + ALT + O pour afficher la fenêtre Sortie.
  7. Appuyez sur la touche F5 pour exécuter le code. Lorsque la boîte de dialogue Échec de l'Assertion s'affiche, cliquez sur Ignorer.
  8. Dans la fenêtre de Console, appuyez sur ENTRÉE. Le programme doit Terminer et la fenêtre sortie doivent afficher la sortie suivante :
    Debug Information-Product Starting 
        The product name is Widget
        The available units on hand are 100
        The per unit cost is 1.03
        System.Xml.XmlDocument
        Field: The product name is Widget
        Field: The units on hand are 100
        Field: The per unit cost is 1.03
        Calc: Total cost is 103
        This message WILL appear
        ---- DEBUG ASSERTION FAILED ----
    ---- Assert Short Message ----
    Message will appear
    ---- Assert Long Message ----
    
        at Module1.Main()  C:\Documents and Settings\Administrator\My 
        Documents\Visual Studio Projects\conInfo\Module1.vb(29)
    
        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
    						
  9. La fenêtre de Console et le fichier Output.txt doivent s'afficher la sortie suivante :
    (The Output.txt file is located in the same directory as the conInfo 
    executable, conInfo.exe. Normally this is the \bin folder of where the 
    project source has been stored. By default that would be C:\Documents and 
    Settings\User login\My Documents\Visual Studio Projects\conInfo\bin)
        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
    						

Listing complet du code

Module Module1
    Sub Main()
        Dim sProdName As String = "Widget"
        Dim iUnitQty As Integer = 100
        Dim dUnitCost As Decimal = 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)
        Debug.WriteLine("The per unit cost is " & dUnitCost)

        Dim oxml As 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, "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")

        Dim tr1 As New TextWriterTraceListener(System.Console.Out)
        Debug.Listeners.Add(tr1)

        Dim tr2 As 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()

    End Sub
End Module
				

Résolution des 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 . Cela se produit indépendamment de si vous utilisez 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 de récepteur pour la même cible dans la Trace et les classes Debug , chaque ligne de sortie est dupliqué, indépendamment de si Debug ou Trace génère la sortie.
    Dim tr1 As New TextWriterTraceListener(System.Console.Out)
    Debug.Listeners.Add(tr1)
    Dim tr2 As New TextWriterTraceListener(System.Console.Out)
    Trace.Listeners.Add(tr2)
    					

Références

Pour plus d'informations, reportez-vous aux rubriques suivantes dans le .Documentation du NET Framework Class Library :
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


Comment instrumenter une petite application avec le suivi ?


http://ASP.dotnetheaven.com/howto/doc/TraceDemo.aspx
ou

http://QuickStart.developerfusion.co.uk/quickstart/howto/doc/TraceDemo.aspx

Propriétés

Numéro d'article: 313417 - Dernière mise à jour: lundi 7 mai 2012 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
Mots-clés : 
kbvs2005swept kbvs2005applies kbvs2002sp1sweep kbbug kbdebug kbhowtomaster kbmt KB313417 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: 313417
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