Izleme ve Visual C# ile hata ayıklama hakkında

Makale çevirileri Makale çevirileri
Makale numarası: 815788 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalenin Microsoft Visual Basic .NET sürümü için bkz: 313417 .
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, hata ayıklama ve izleme sınıflarının nasıl kullanılacağını açıklar. Bu sınıflar, Microsoft .NET ile kullanılabilir Framework. Bu sınıflar, uygulama geliştirme sırasında veya üretim için dağıtım sonra uygulama performansı hakkında bilgi sağlamak için kullanabilirsiniz. Bu sınıflar .NET Framework araçları özellikleri yalnızca bir parçasıdır.

Gereksinimler

Aşağıdaki listede, gereksinim duyacağınız donanım, yazılım, ağ altyapısı ve hizmet paketleri önerilmektedir:
  • Microsoft Windows 2000 veya Microsoft Windows XP veya Microsoft Windows Server 2003
  • Microsoft Visual C#
Bu makalede ayrıca, programda hata ayıklama ile bildiğinizi varsayar.

Teknik of açıklaması


Create a Sample with the Debug Class </a0> bölümündeki adımları Debug sınıfı program yürütme hakkında bilgi sağlamak üzere kullandığı bir konsol uygulamasının nasıl oluşturulacağını göstermektedir.

Program çalıştırdığınızda, program yürütme sırası performans ölçüm bilgilerini sağlamak için veya düzgün çalışmamasına algılamaya izlemek için Yardım iletileri üretmek için hata ayıklama sınıfı yöntemleri kullanabilirsiniz. Varsayılan olarak, hata ayıklama sınıfı üreten iletileri Visual Studio'nun çıktı penceresinde görünür tümleşik geliştirme ortamı (IDE).

Örnek kod, bir satırı Sonlandırıcı tarafından izlenen bir ileti oluşturmak için WriteLine yöntemi kullanır. Bir ileti oluşturmak için bu yöntemi kullandığınızda, her iletiyi ayrı bir satırda <a0>Çıktı</a0> penceresinde görüntülenir.

Hata ayıklama sınıfının Assert yöntemini kullandığınızda, yalnızca belirtilen bir koşul yanlış olarak değerlendirilirse, çıktı penceresi bir ileti görüntüler. Iletinin kullanıcı için kalıcı bir iletişim kutusu görüntülenir. Iletişim kutusunda, iletinin, proje adını ve Debug.Assert ekstresi numarası içerir. Iletişim kutusunda, aşağıdaki üç komut düğmeleri de içerir:
  • Iptal:Uygulamanın çalışmasını durdurur.
  • Yeniden deneme:Uygulama hata ayıklama moduna girer.
  • Yoksay:Uygulama devam eder.
Kullanıcı uygulama devam etmeden önce bu düğmelerden birini tıklatmanız gerekir.

Destinations (Hedefler) çıktı penceresini farklı sınıf hata ayıklama çıktısını da yönlendirebilirsiniz. Hata ayıklama sınıfı dinleyicisi nesneleri içeren dinleyiciler adlı sahiptir.

Her dinleyicisi nesnesi, hata ayıklama çıkışı izler ve belirli bir hedefi çıktısına yönlendirir.

Her bir Dinleyicidinleyicisi koleksiyonunda, Debug sınıfı ürettiği herhangi bir çıktı alır. Sınıf olmalıdır, Dinleyici nesneleri tanımlamak için kullanın. Sınıf olmalıdır, Oluşturucu ile hedefi belirtebilirsiniz.

Bazı olası çıktı hedefi şunlardır:
  • System.Console.Out özelliğini kullanarak konsol penceresi.
  • System.IO.File.CreateText("FileName.txt") deyimini kullanarak BIR metin (.txt) dosyası.
Bir olmalıdır nesnesi oluşturduktan sonra hata ayıklama çıkışı almaya Debug.listeners derlemesine nesneyi eklemeniz gerekir.

Ile <a2>debug</a2> sınıf örneği oluşturma

  1. Visual Studio ya da Visual C# Express Edition'ı başlatın.
  2. ConInfo adlı yeni bir Visual C# Console Application projesi oluşturun. Class1, Visual Studio. NET'te oluşturulur. Visual Studio 2005'te, program.cs oluşturulur.
  3. Üst Class1 veya program.cs
    using System.Diagnostics;
    aşağıdaki ad alanını ekleyin.
  4. Bir ürünle ilgili bilgiler içerecek biçimde değişkenlerini başlatmak için <a0></a0>, Main yöntemi için aşağıdaki bildirim deyimleri ekleyin:
    string sProdName = "Widget";
    int iUnitQty = 100;
    double dUnitCost = 1.03;
  5. Ileti sınıfı üreten WriteLine yönteminin giriş ilk parametresi olarak belirtin. Output penceresi görünür olduğundan emin olmak için CTRL + ALT + S tuş birleşimine basın.
    Debug.WriteLine("Debug Information-Product Starting ");
  6. Okunabilir olması için sonraki iletileri <a0>Çıktı</a0> penceresinde girintilemek için Girinti yöntemi kullanın:
    Debug.Indent();
  7. Seçili değişkenlerinin içeriğini görüntülemek için <a0></a0>, WriteLine yöntemi aşağıdaki gibi kullanın:
    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 yöntemi, ad ve varolan bir nesnenin sınıf adı'nı görüntülemek için de kullanabilirsiniz. Örneğin, aşağıdaki kodu, çıkış penceresinde System.Xml.XmlDocument ad boşluğunu görüntüler:
    System.Xml.XmlDocument oxml = new System.Xml.XmlDocument();
    Debug.WriteLine(oxml);
  9. Çıktı düzenlemek için <a0></a0>, ikinci giriş kategori olarak bir isteğe bağlı, parametre WriteLine yönteminin içerebilir. Bir kategori biçimi belirtirseniz, çıktısını, pencere iletisidir "Kategori: iletinin." Örneğin aşağıdaki kodu ilk satırı görüntüler "alan: pencere öğesi ürün adı olduğu" çıktı penceresini:
    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. Yalnızca belirtilen bir koşul doğru olarak hata ayıklama sınıfının WriteLineIf yöntemini kullanarak değerlendirilirse, çıktı penceresi iletileri görüntüleyebilirsiniz. Değerlendirilecek koşul WriteLineIf yönteminin ilk giriş parametresidir. Ikinci parametre WriteLineIf, yalnızca ilk parametresinde koşul doğru olarak değerlendirilirse, görüntülenen iletisidir.
    Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear");
    Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear");
    
  11. Hata ayıklama sınıfının Assert yöntemini kullanabilir, böylece yalnızca belirtilen bir koşul yanlış olarak değerlendirilirse Output penceresi, iletiyi görüntüler:
    Debug.Assert(dUnitCost > 1, "Message will NOT appear");
    Debug.Assert(dUnitCost < 1, "Message will appear since dUnitcost < 1 is false");
    
  12. Konsol penceresi (tr1) ve <a1>Output.txt</a1> (tr2) adlı bir metin dosyası için olmalıdır nesneleri oluşturmak ve her nesnenin Debug dinleyiciler derlemesine ekleyin:
    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. Okunabilir olması için Debug sınıfı oluşturur, izleyen iletiler için girintiyi kaldırmak için Unindent yöntemini kullanın. Azalt ve Unindent yöntemleri kullandığınızda, okuyucu çıkış grubunu.
    Debug.Unindent();
    Debug.WriteLine("Debug Information-Product Ending");
    ayırt
  14. Tüm çıktıyı her dinleyicisi nesne almasını sağlamak için <a0></a0>, hata ayıklama sınıfı arabellekleri için Flush yöntemi çağrısı:
    Debug.Flush();

Izleme sınıf'ı kullanma

Izleme sınıfı iletileri oluşturmak için bu uygulamanın yürütülmesi monitör de kullanılabilir. Izleme ve hata ayıklama sınıfları, aşağıdakiler de dahil olmak üzere bir çıktı oluşturmak için aynı yöntemlerin çoğu Paylaştır:
  • Console.WriteLine
  • WriteLineIf
  • Girinti
  • Unindent
  • Onaylama işlemi
  • Temizleme
Izleme ve hata ayıklama sınıfları ayrı ayrı veya birlikte aynı uygulamada kullanabilirsiniz. Hata ayıklama Solution yapılandırma projesinde, izleme hem de hata ayıklama çıkışı etkindir. Proje çıkış her ikisini de bu sınıfların tüm dinleyicisi nesneleri oluşturur. Ancak bir yayın Solution yapılandırma proje izleme bir sınıftan yalnızca çıktı oluşturur. Hata ayıklama sınıf yöntemi etkinleştirilmelerinde Release Solution yapılandırma proje yoksayar.
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();

It Works That doğrulayın.

  1. Hata ayıklama geçerli çözüm yapılandırması olduğundan emin olun.
  2. Solution Explorer (Çözüm Gezgini) penceresinde görünür durumda değilse, bu pencereyi görüntülemek için CTRL + ALT + N tuş birleşimine basın.
  3. ConInfo ' ı sağ tıklatın ve sonra da Properties ' i tıklatın.
  4. ConInfo özellik sayfasındaki yapılandırma klasörü altında sol bölmede oku, hata ayıklama için işaret ettiğinden emin olun.

    NotDebug, Visual C# 2005 ve Visual C# 2005 Express Edition conInfo sayfayı tıklatın.
  5. Yapılandırma açılan - listesinde aşağı yapılandırma klasörün üstünde tıklatın Active (hata ayıklama) veya hata ayıklama ve Tamam ' ı tıklatın. Visual C# 2005 ve Visual C# 2005 Express Edition Debughata ayıklama sayfasında <a1>yapılandırma</a1> a?a?? aç?lan liste kutusunda <a0><a1>Etkin</a1> (hata ayıklama) veya</a0>'ı tıklatın ve sonra Dosya menüsünde Kaydet ' i tıklatın.
  6. Çıktı penceresini görüntülemek için CTRL + ALT + O tuşlarına basın.
  7. Kodu çalıştırmak için F5 tuşuna basın. Onaylama işlemi başarısız iletişim kutusu görüntülendiğinde, Yoksay ' ı tıklatın.
  8. Konsol penceresinde, ENTER tuşuna basın. Program bitiş ve çıktı penceresinde aşağıdakine benzer bir çıktı görüntülemelidir
        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. Konsol penceresi ve Output.txt dosyasını aşağıdaki çıktıyı görüntülenmelidir:
    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			
    
Not Output.txt dosya conInfo yürütülebilir (conInfo.exe) ile aynı dizinde bulunur. Genellikle, bu projenin kaynak nerede depolandığını \bin klasördür. Varsayılan olarak, bu, C:\Documents and Settings\ User login Documents\Microsoft Studio Projects\conInfo\bin. Visual C# 2005 ve Visual C# 2005 Express Edition Output.txt dosyası aşağıdaki klasörde bulunur:
C:\Documents and Settings\ User login Documents\Microsoft Studio 2005\Projects\conInfo\conInfo\bin\Debug


Kod tamamlamak listesi

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


Sorun Giderme

  • Çözüm yapılandırma türü Release ise, Debug sınıfı çıkış göz ardı edilir.
  • Belirli bir hedef için bir olmalıdır sınıfı oluşturduktan sonra izleme ve hata ayıklama sınıfları olmalıdır çıkış alır. Bu, izleme veya hata ayıklama sınıfı, <a2>Add</a2> yöntemini olmalıdırdinleyiciler sınıfına eklemek için kullanıp bağımsız olarak gerçekleşir.
  • Izleme ve hata ayıklama sınıfları için aynı hedef bir dinleyiciler nesnesi eklerseniz, olup hata ayıklama veya izleme çıkışı oluşturur bağımsız olarak her çıktı satırının yineleniyor.
             TextWriterTraceListener myWriter = new TextWriterTraceListener(System.Console.Out);
             Debug.Listeners.Add(myWriter);
            
             TextWriterTraceListener myCreator = new TextWriterTraceListener(System.Console.Out);
             Trace.Listeners.Add(myCreator);
             
    

Referanslar

Daha fazla bilgi için bkz: aşağıdaki konular, .NET Framework sınıf kitaplığı belgeler:
Sınıf izleme
http://msdn2.microsoft.com/en-us/library/system.diagnostics.trace(vs.71).aspx

Sınıf hata ayıklama
http://msdn2.microsoft.com/en-us/library/system.diagnostics.debug(vs.71).aspx

Özellikler

Makale numarası: 815788 - Last Review: 13 Mart 2008 Perşembe - Gözden geçirme: 4.3
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbprogramming kbdebug kbnamespace kbhowtomaster KB815788 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:815788

Geri Bildirim Ver

 

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