Postup při sledování a ladění v jazyce Visual C#

Překlady článku Překlady článku
ID článku: 815788 - Produkty, které se vztahují k tomuto článku.
Microsoft Visual Basic .NET verzi tohoto článku naleznete v tématu 313417 .
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje způsob použití ladění a trasování třídy. Tyto třídy jsou k dispozici v Microsoft rozhraní.NET Framework. Tyto třídy můžete poskytnout informace o výkonu aplikace během vývoje aplikace nebo po zavedení do výroby. Tyto třídy jsou pouze jednu část funkce služby WMI, které jsou k dispozici v rozhraní.NET Framework.

Požadavky

Následující seznam obsahuje doporučený hardware, software, síťovou infrastrukturu a aktualizace service Pack, které potřebujete:
  • Microsoft Windows 2000 nebo Microsoft Windows XP nebo Microsoft Windows Server 2003
  • Microsoft Visual C#
Tento článek také předpokládá, že jste obeznámeni s ladění programů.

Popis techniky


Kroky v Ladění třídy vytvořit vzorek části ukazují, jak vytvořit aplikaci konzoly, která používá třídy Debug k poskytování informací o provádění programu.

Při spuštění programu, můžete použít metody třídy Debug k vytvoření zpráv, které umožňují sledovat pořadí spouštění programu ke zjišťování poruch, nebo může poskytnout informace o měření výkonu. Ve výchozím nastavení jsou zprávy, které generuje třídy Debug zobrazují v okně výstup z Visual Studio integrované vývojové prostředí (IDE).

Ukázkový kód pomocí WriteLine metoda vytvoří zprávu, která následuje zakončení řádku. Pokud použijete tuto metodu k vytvoření zprávy, každá zpráva se zobrazí na samostatném řádku v okně výstup.

Při použití metody Assert třídy Debug okno výstup zobrazuje zprávy pouze v případě, že je zadaná podmínka vyhodnocena jako false. Zpráva se zobrazí také v modálním dialogovým oknem uživateli. Dialogové okno obsahuje zprávy, název projektu a číslo výpisu příkazu Debug.Assert . Dialogové okno také obsahuje následující tři příkazová tlačítka:
  • Přerušení: aplikace zastaví.
  • Opakování: aplikace přejde do režimu ladění.
  • Ignorovat: applicationproceeds.
Uživatel musí kliknout jedno z těchto tlačítek, můžete pokračovat v aplikaci.

Také může přesměrovat výstup z třídy Debug do jiných míst určení než okno výstup. Třída Debug má kolekci s názvem posluchače zahrnuje posluchačů .

Každý objekt Listener sleduje výstup ladění a nasměruje výstup do zadaného cíle.

Každý posluchače do kolekce posluchačů přijme jakýkoli výstup, který generuje třídy Debug . TextWriterTraceListener třídy slouží k definování objektů posluchače . Můžete určit cílové třídy TextWriterTraceListener prostřednictvím jeho konstruktoru.

Některé možného výstupního cíle patří:
  • Okno konzoly pomocí vlastnosti System.Console.Out .
  • Textového souboru (TXT) s použitím příkazu System.IO.File.CreateText("FileName.txt") .
Po vytvoření objektu TextWriterTraceListener musí přidat objekt do kolekce Debug.Listeners Chcete-li získat výstup ladění.

Ladění třídy vytvořit vzorek

  1. Spusťte aplikaci Visual Studio nebo Visual C# Express Edition.
  2. Vytvoření nové aplikace Visual C# konzoly projectnamed conInfo. Class1 je vytvořen v aplikaci Visual Studio .NET. V aplikaci Visual Studio 2005 je vytvořena program.cs.
  3. Přidejte následující obor názvů horní Class1 nebo Program.cs.
    using System.Diagnostics;
  4. K inicializaci proměnné, které obsahují informace o aproduct, přidejte následující příkazy deklarace metody Main :
    string sProdName = "Widget";
    int iUnitQty = 100;
    double dUnitCost = 1.03;
  5. Zadejte zprávu vypočítávající třídy jako parametr firstinput metody WriteLine . Stiskněte kombinaci kláves CTRL + ALT + O a ujistěte se, že je viditelné okno výstup.
    Debug.WriteLine("Debug Information-Product Starting ");
  6. Pro čitelnost použijte metodu Odsazení odsazení dalších zpráv v okně výstup:
    Debug.Indent();
  7. Chcete-li zobrazit obsah vybrané proměnné, použijte metody WriteLine takto:
    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. WriteLine metoda můžete také zobrazit obor názvů a název třídy pro objekt anexistent. Například následující kód zobrazí obor názvů System.Xml.XmlDocument v okně výstup:
    System.Xml.XmlDocument oxml = new System.Xml.XmlDocument();
    Debug.WriteLine(oxml);
  9. Uspořádání výstupu, můžete zahrnout kategorie jako anoptional, druhý vstupní parametr metody WriteLine . Pokud zadáte kategorii, je formát zprávy Outputwindow "kategorie: zprávy." Například kód zobrazí v prvním řádku thefollowing "pole: název produktu je Widget" v Outputwindow:
    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. Okno výstup umožňuje zobrazit zprávy pouze v případě, že adesignated podmínka vyhodnocena jako true pomocí WriteLineIf metody třídy Debug . Podmínka pro vyhodnocení je první vstupní parameterof WriteLineIf metody. Druhý parametr WriteLineIf je zpráva, která se zobrazí pouze v případě, že podmínka v firstparameter vyhodnocena jako true.
    Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear");
    Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear");
    
  11. Použijte metodu Assertladění třídy tak, aby okno výstup zobrazuje zprávy pouze v případě, že aspecified podmínka vyhodnocena jako false:
    Debug.Assert(dUnitCost > 1, "Message will NOT appear");
    Debug.Assert(dUnitCost < 1, "Message will appear since dUnitcost < 1 is false");
    
  12. Vytvoření objektů TextWriterTraceListener okna konzoly (tr1) a textového souboru namedOutput.txt (tr2) a potom přidat každý objekt do kolekce Posluchačů ladění :
    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. Pro čitelnost použijte metodu Unindent odeberte odsazení dalších zpráv, které generuje třídyDebug . Při použití Odsazení a Unindent metod dohromady, čtenář může rozlišovat výstup jako skupina.
    Debug.Unindent();
    Debug.WriteLine("Debug Information-Product Ending");
  14. A ujistěte se, že každý objekt Listener obdrží svůj výstup, volání metody Flush pro třídu Debug vyrovnávací paměti:
    Debug.Flush();

Pomocí trasování třídy

Můžete také trasování třídy k vytvoření zprávy sledující spuštění aplikace. Ladění a trasování třídy sdílet většinu stejných metod vyprodukovat výstup, včetně následujících:
  • WriteLine
  • WriteLineIf
  • Zvětšit odsazení
  • Zrušit odsazení
  • Vyhodnocení
  • Vyprázdnění
Můžete trasování a ladění tříd samostatně nebo společně ve stejné aplikaci. V konfiguraci ladění řešení projektu Sledování a ladění výstupu jsou aktivní. Projekt generuje výstup z obou těchto tříd ke všem objektům Listener . Konfigurace řešení Release projektu však pouze generuje výstup trasování třídy. Konfigurace řešení Release projektu ignoruje všechny vyvolání metody třídy ladění .
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();

Ověřte, zda funguje

  1. Ujistěte se, že ladění je aktuální konfigurace řešení.
  2. Pokud je okno Průzkumník řešení notvisible, stiskněte kombinaci kláves CTRL + ALT + L thiswindow zobrazení.
  3. Klepněte pravým tlačítkem myši conInfoa potom klepněte na příkazVlastnosti.
  4. V levém podokně na stránce vlastností conInfo ve složceKonfigurace Ujistěte se, že šipka ukazuje naladění.

    Poznámka: V aplikaci Visual C# 2005 a Visual C# 2005 Express Edition klepněte na tlačítko ladění na stránce conInfo .
  5. Výše uvedené složce Konfigurace vyberte v rozevíracím seznamuKonfigurace klepněte na tlačítko Active(Debug) nebo laděnía potom klepněte na tlačítkoOK. V aplikaci Visual C# 2005 a Visual C# 2005 Express Edition klepněte na položku aktivní (ladění) nebo ladění v poli rozevíracího seznamu Konfiguraceladění stránky a klepněte na tlačítko Uložit v nabídce soubor .
  6. Stisknutím kombinace kláves CTRL + ALT + M, zobrazte okno výstupu.
  7. Stisknutím klávesy F5 spustit kód. Pokud se zobrazí dialogové oknoChyba při vyhodnocení , klepněte na tlačítkoPřeskočit.
  8. V okně konzoly stiskněte klávesu ENTER. Program shouldfinish a okno Výstup by měl zobrazit výstup podobný následujícímu
        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. Okna konzoly a souboru výstup.txt by displaythe následující výstup:
    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			
    
Poznámka: Výstup.txt soubor je umístěn ve stejném adresáři jako spustitelný soubor conInfo (conInfo.exe). Obvykle je to \bin složku pro uložení zdroje projektu. Ve výchozím nastavení toto je C:\Documents and Settings\Přihlášení uživateleDocuments\Visual studio Projects\conInfo\bin. V aplikaci Visual C# 2005 a Visual C# 2005 Express Edition souboru výstup.txt je umístěn v následující složce:
C:\Documents and Settings\Přihlášení uživateleDocuments\Visual studio 2005\Projects\conInfo\conInfo\bin\Debug


Úplný výpis kódu

   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();
      }			
   }


Poradce při potížích

  • Pokud je typ konfigurace řešení uvolnění, výstup ladění třídy je ignorována.
  • Po vytvoření třídy TextWriterTraceListener pro konkrétní cíl TextWriterTraceListener přijme výstup trasování a ladění tříd. K tomu dochází bez ohledu na to, zda používáte metodu Add třídy Debug nebo trasováníposluchače třídy přidat TextWriterTraceListener .
  • Pokud přidáte objekt posluchače pro stejný cíl trasování a ladění tříd, je duplicitní každý řádek výstupu, bez ohledu na to, zda generujeladění a trasování výstupu.
             TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
             Debug.Listeners.Add(myWriter);
            
             TextWriterTraceListener myCreator = new TextWriterTraceListener(System.Console.Out);
             Trace.Listeners.Add(myCreator);
             
    

Odkazy

Další informace naleznete v následujících tématech dokumentace rozhraní.NET Framework Class Library:
Trasovací třída
http://msdn2.microsoft.com/en-us/library/System.Diagnostics.Trace (vs.71).aspx

Ladění třídy
http://msdn2.microsoft.com/en-us/library/System.Diagnostics.Debug (vs.71).aspx

Vlastnosti

ID článku: 815788 - Poslední aktualizace: 20. srpna 2014 - Revize: 7.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Klíčová slova: 
kbprogramming kbdebug kbnamespace kbhowtomaster kbmt KB815788 KbMtcs
Strojově přeložený článek
DŮLEŽITÉ: Tento článek je přeložen pomocí softwaru na strojový překlad Microsoft. Nepřesný či chybný překlad lze opravit prostřednictvím technologie Community Translation Framework (CTF). Microsoft nabízí strojově přeložené, komunitou dodatečně upravované články, a články přeložené lidmi s cílem zajistit přístup ke všem článkům v naší znalostní bázi ve více jazycích. Strojově přeložené a dodatečně upravované články mohou obsahovat chyby ve slovníku, syntaxi a gramatice. Společnost Microsoft není odpovědná za jakékoliv nepřesnosti, chyby nebo škody způsobené nesprávným překladem obsahu nebo jeho použitím našimi zákazníky. Více o CTF naleznete na http://support.microsoft.com/gp/machine-translation-corrections/cs.
Projděte si také anglickou verzi článku: 815788

Dejte nám zpětnou vazbu

 

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