İzleme ve hata ayıklama Visual C# ' ta nasıl

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 İzleme sınıflarının nasıl kullanılacağını açıklar. Bu sınıflar, Microsoft .NET Framework içinde kullanılabilir. Uygulama geliştirme sırasında veya sonrasında üretim dağıtımına bir uygulama performansı hakkında bilgi sağlamak için bu sınıfları kullanırsınız. Bu sınıflar, .NET Framework'te bulunan araçları özellikleri yalnızca bir parçasıdır.

Gereksinimleri

Aşağıdaki listede önerilen donanım, yazılım, ağ altyapısı ve gereken 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.

Tekniğin açıklaması


Adımları Örnek bir hata ayıklama sınıfı ile oluşturma Bölüm program yürütme hakkında bilgi sağlamak için hata ayıklama sınıfı kullanan bir konsol uygulamasının nasıl yaratılacağını göstermektedir.

Programını çalıştırdığınızda, program çalıştırma sırası arızaları veya performans ölçüm bilgilerini sağlamak için izlemek için Yardım iletileri üretmek için hata ayıklama sınıfının yöntemlerini kullanabilirsiniz. Varsayılan olarak, hata ayıklama sınıfı üreten iletileri, Visual Studio tümleşik geliştirme ortamı (IDE) çıktı penceresinde görünür.

Ö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 ileti Output penceresinde ayrı bir satırda görüntülenir.

Hata ayıklama sınıfı yöntemine çağrıdan kullandığınızda, çıktı penceresinde yalnızca belirtilen bir koşul yanlış olarak değerlendirilirse bir ileti görüntüler. İleti de kullanıcıya kalıcı bir iletişim kutusu görüntülenir. İletişim kutusu iletisi, proje adı ve Debug.Assert Ekstre numarasını içerir. İletişim kutusu aşağıdaki üç komut düğmeleri de içerir:
  • İptal: çalışan uygulama durdurulur.
  • Yeniden deneyin: uygulama hata ayıklama moduna girer.
  • Yoksay: applicationproceeds.
Kullanıcı, uygulama devam etmeden önce bu düğmelerden birini tıklatmanız gerekir.

Ayrıca hata ayıklama sınıfı çıktısını Output penceresi dışındaki hedeflere yönlendirebilirsiniz. Hata ayıklama sınıfı dinleyici nesnelerini içeren dinleyicileri adlı bir koleksiyon vardır.

Her bir dinleyici nesnesi hata ayıklama çıktı izler ve belirli bir hedefi için çıkış yönlendirir.

Dinleyici koleksiyonundaki her dinleyicisihata ayıklama sınıfı oluşturur herhangi bir çıktı alır. Dinleyici nesnelerini tanımlamak için olmalıdır sınıfını kullanın. Hedef olmalıdır sınıfının yapıcısına yoluyla belirtebilirsiniz.

Bazı olası çıktı hedefleri arasında şunlar yer alır:
  • System.Console.Out özelliğini kullanarak konsol penceresini açın.
  • System.IO.File.CreateText("FileName.txt") deyimi kullanarak bir metin (.txt) dosyası.
Olmalıdır nesnesi oluşturduktan sonra nesnenin hata ayıklama çıktısını almak için Debug.Listeners koleksiyonuna eklemeniz gerekir.

Örnek bir hata ayıklama sınıfı ile oluşturma

  1. Visual Studio veya Visual C# Express Edition'ı başlatın.
  2. Yeni bir Visual C# konsol uygulaması projectnamed oluşturmak conInfo. Class1 Visual Studio .NET içinde oluşturulur. Program.cs Visual Studio 2005'te oluşturuldu.
  3. Class1 veya program.cs'te üstünde aşağıdaki ad alanı ekleyin.
    using System.Diagnostics;
  4. Aproduct hakkında bilgi içerecek şekilde değişkenlerini başlatmak için aşağıdaki bildirim deyimleri Main yöntemine ekleyin:
    string sProdName = "Widget";
    int iUnitQty = 100;
    double dUnitCost = 1.03;
  5. WriteLine yöntemi firstinput parametresi olarak sınıf üreten iletiyi belirtin. Output penceresi görünür olduğundan emin olmak için CTRL + ALT + O tuş bileşimine basın.
    Debug.WriteLine("Debug Information-Product Starting ");
  6. Okunabilirlik için Girinti yöntemi çıktı penceresinde sonraki iletileri girintilemek için kullanın:
    Debug.Indent();
  7. Seçili değişkenlerinin içeriğini görüntülemek için 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, isim uzayı ve sınıf adı anexistent nesne için görüntülemek için de kullanabilirsiniz. Örneğin, aşağıdaki kod çıktı penceresinde System.Xml.XmlDocument ad boşluğunu görüntüler:
    System.Xml.XmlDocument oxml = new System.Xml.XmlDocument();
    Debug.WriteLine(oxml);
  9. Çıkış düzenlemek için dahil edebilirsiniz bir kategori olarak Time.TZ, WriteLine yönteminin ikinci giriş parametresi. Kategori belirtirseniz, Outputwindow ileti biçimi olan "Kategori: ileti." Örneğin, aşağıdaki ilk satırı kodu görüntüler "alan: Ürün adı pencere öğesi olan" Outputwindow içinde:
    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. Output penceresi, yalnızca hata ayıklama sınıfının WriteLineIf yöntemi kullanılarak adesignated koşul doğru olarak değerlendirilirse, iletileri görüntüleyebilirsiniz. Değerlendirilmek üzere ilk giriş parameterof WriteLineIf yöntemi bir durumdur. WriteLineIf ' in ikinci parametresi firstparameter koşul doğru olarak değerlendirilirse görüntülenen bir iletidir.
    Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear");
    Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear");
    
  11. Hata ayıklama sınıfı yöntemine çağrıdan kullanabilir, böylece yalnızca belirlenen 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. Bir metin dosyası namedOutput.txt (tr2) ve konsol penceresi (tr1) için olmalıdır nesneleri oluşturmak ve Hata ayıklama dinleyicileri koleksiyonu her nesne 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. Okunabilirlik için Unindent yöntemini,hata ayıklama sınıfı oluşturur, izleyen iletiler için Girintiyi kaldırmak için kullanın. Okuyucu Girinti ve Unindent yöntemleri kullandığınızda, çıktı grubu olarak ayırabilirsiniz.
    Debug.Unindent();
    Debug.WriteLine("Debug Information-Product Ending");
  14. Her dinleyici nesnesi, çıktı aldığından emin olmak için hata ayıklama sınıfı arabellekleri için reçeteye göre sarf yöntemini çağırın:
    Debug.Flush();

İzleme sınıfını kullanma

De İzleme sınıfı iletilerinizi üretmeye izleyen bir uygulamanın yürütme kullanabilirsiniz. İzleme ve hata ayıklama sınıfı aşağıdakiler de dahil olmak üzere çıktı oluşturmak için aynı yöntemleri çoğunu paylaşır:
  • WriteLine
  • WriteLineIf
  • Girinti
  • Girintisini Kaldır
  • Onaylama işlemi
  • Temizleme
İzleme ve hata ayıklama sınıfları ayrı ayrı veya birlikte aynı uygulama içinde kullanabilirsiniz. İzleme ve hata ayıklama çıktı bir hata ayıklama çözüm yap?land?rmas? projesinde etkindir. Proje çıktı bu iki sınıf tüm dinleyici nesnelere oluşturur. Ancak, bir da??t?m projesi yalnızca İzleme sınıfından bir çıktı üretir. Da??t?m çözüm yap?land?rmas?n? projenin hata ayıklama sınıfı yöntemi çağırmaları 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();

Düzgün çalıştığını doğrulayın

  1. Hata ayıklama geçerli çözüm yapılandırması olduğundan emin olun.
  2. Solution Explorer penceresi notvisible ise, thiswindow görüntülemek için CTRL + ALT + L tuş bileşimine basın.
  3. ConInfosağ tıklatın ve sonraÖzellikler' i tıklatın.
  4. ConInfo özellik sayfası,yapılandırma klasörü altında sol bölmede okuhata ayıklamaiçin işaret ettiğinden emin olun.

    Not Visual C# 2005 ve Visual C# 2005 Express Edition, hata ayıklamaconInfo sayfasında tıklayın.
  5. Konfigürasyon klasöründeyapılandırma aşağı açılan liste kutusunda, yukarıdaki Active(Debug) veya Hata Ayıkla' yı tıklatın ve sonraTamam' ı tıklatın. Visual C# 2005 ve Visual C# 2005 Express Edition, Etkin (hata ayıklama) veya hata ayıklamahata ayıklama sayfasında yapılandırma aşağı açılan liste kutusunda 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 + S 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ündüğünde,Yoksay' ı tıklatın.
  8. Konsol penceresinde ENTER tuşuna basın. Program shouldfinish ve çıkış penceresinde aşağıdakine benzer bir çıktı görüntülenmelidir
        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 çıktı.txt dosyasına aşağıdaki çıktıyı görüntülemek gerekir:
    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 Çıktı.txt dosyasına yürütülebilir conInfo (conInfo.exe) ile aynı dizinde bulunur. Genellikle, bu proje kaynağı depolandığı \bin klasörüdür. Varsayılan olarak C:\Documents and Settings\ budurKullanıcı oturum açma\My Documents\Visual studio Projects\conInfo\bin. Visual C# 2005 ve Visual C# 2005 Express Edition, çıktı.txt dosyası aşağıdaki klasörde bulunur:
C:\Documents and Settings\Kullanıcı oturum açma\My Documents\Visual studio 2005\Projects\conInfo\conInfo\bin\Debug


Tam kod 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ü yayınise, hata ayıklama sınıfı çıkış göz ardı edilir.
  • Belirli bir hedef için olmalıdır sınıfı oluşturduktan sonra İzleme ve hata ayıklama sınıfları olmalıdır çıktı alır. Bu olup olmadığını, İzleme veya hata ayıklama sınıfı Add yöntemi olmalıdırdinleyicileri sınıfına eklemek için kullandığınız bağımsız olarak gerçekleşir.
  • İzleme ve hata ayıklama sınıfı aynı hedef için bir dinleyici nesnesi eklerseniz, her satır çıktı oluphata ayıklama veya İzleme çıktısını oluşturur ne olursa olsun 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 .NET Framework sınıf kitaplığı belgelerinde aşağıdaki konulara bakın:
İzleme sınıfı
http://msdn2.microsoft.com/en-us/library/System.Diagnostics.trace (vs.71).aspx

Hata ayıklama sınıfı
http://msdn2.microsoft.com/en-us/library/System.Diagnostics.Debug (vs.71).aspx

Özellikler

Makale numarası: 815788 - Last Review: 20 Ağustos 2014 Çarşamba - Gözden geçirme: 5.0
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: 
kbprogramming kbdebug kbnamespace kbhowtomaster kbmt KB815788 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.
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