Visual Basic .NET'te İzleme ve Hata Ayıklama sınıflarını kullanma
Bu makalede, Visual Basic .NET'te ve sınıflarının Trace
nasıl kullanılacağı Debug
hakkında bilgi sağlanır.
Orijinal ürün sürümü: Visual Basic .NET
Özgün KB numarası: 313417
Özet
Bu makalede ve sınıflarının Debug
nasıl kullanılacağı gösterilmektedir Trace
. Bu sınıflar Microsoft .NET Framework'nde kullanılabilir. Uygulama geliştirme sırasında veya üretime dağıtımdan sonra uygulamanın performansı hakkında bilgi sağlamak için bu sınıfları kullanabilirsiniz. Bu sınıflar, .NET Framework kullanılabilen izleme özelliklerinin yalnızca bir parçasıdır.
Gereksinimler
Aşağıdaki listede ihtiyacınız olan önerilen donanım, yazılım, ağ altyapısı ve hizmet paketleri özetlenmiştir:
- Windows
- Visual Basic .NET
Bu makalede, program hata ayıklama hakkında bilgi sahibi olduğunuz da varsayılır.
Tekniğin açıklaması
Hata ayıklama sınıfıyla örnek oluşturma bölümündeki adımlar, program yürütme hakkında bilgi sağlamak için sınıfını kullanan Debug
bir konsol uygulamasının nasıl oluşturulacağını gösterir.
Program çalıştırıldığında, izlemenize, arızaları Debug
algılamanıza veya performans ölçümü bilgileri sağlamaya yardımcı olan iletiler üretmek için sınıfının yöntemlerini kullanabilirsiniz. Varsayılan olarak, sınıfın Debug
ürettiği iletiler Microsoft Visual Studio Tümleşik Geliştirme Ortamı'nın (IDE) Çıkış penceresinde görünür.
Örnek kod, bir satır sonlandırıcısı tarafından izlenen bir ileti oluşturmak için yöntemini kullanır WriteLine
. İleti oluşturmak için bu yöntemi kullandığınızda, her ileti Çıkış penceresinde ayrı bir satırda görüntülenir.
sınıfının yöntemini Debug
kullanırsanızAssert
, Çıkış penceresi yalnızca belirtilen bir koşul false olarak değerlendirilirse bir ileti görüntüler. İleti, kullanıcıya kalıcı bir iletişim kutusunda da görünür. İletişim kutusu iletiyi, proje adını ve Debug.Assert
deyim numarasını içerir. İletişim kutusunda üç komut düğmesi de bulunur:
- Durdur: Uygulama çalışmayı durduruyor.
- Yeniden deneyin: Uygulama hata ayıklama moduna girer.
- Yoksay: Uygulama devam eder. Uygulamanın devam etmesi için kullanıcının bu düğmelerden birine tıklaması gerekir.
Ayrıca, çıktıyı sınıfından Debug
Çıkış penceresi dışındaki hedeflere de yönlendirebilirsiniz. sınıfı, Debug
Dinleyici nesnelerini içeren adlı Listeners
bir koleksiyona sahiptir. Her Dinleyici nesnesi çıkışı izler Debug
ve çıkışı belirtilen hedefe yönlendirir. Koleksiyondaki Listeners
her Dinleyici, sınıfın Debug
oluşturduğu tüm çıkışları alır. TextWriterTraceListener
Dinleyici nesnelerini tanımlamak için sınıfını kullanın. Bir sınıfın hedefini TextWriterTraceListener
oluşturucu aracılığıyla belirtebilirsiniz. Bazı olası çıkış hedefleri şunlardır:
- özelliğini kullanarak
System.Console.Out
Konsol penceresi. - deyimini kullanarak bir
System.IO.File.CreateText("FileName.txt"))
metin dosyası.
Bir TextWriterTraceListener
nesne oluşturduktan sonra, çıktı almak Debug
için Debug.Listeners
nesnesini koleksiyona eklemeniz gerekir.
Debug sınıfıyla örnek oluşturma
Visual Basic .NET kullanarak conInfo adlı yeni bir Konsol Uygulaması projesi oluşturun. Adlı
Module1
bir genel modül varsayılan olarak projeye eklenir.Bir ürün hakkında bilgi içerecek değişkenleri başlatmak için aşağıdaki
Dim
deyimleri ekleyin:Dim sProdName As String = "Widget" Dim iUnitQty As Integer = 100 Dim dUnitCost As Decimal = 1.03
sınıfının yönteminin ilk giriş parametresi
WriteLine
olarak ürettiği iletiyi belirtin. Çıkış penceresinin görünür olduğundan emin olmak için CTRL+ALT+O tuş bileşimine basın.Debug.WriteLine("Debug Information-Product Starting ")
Okunabilirlik için, Çıkış penceresinde sonraki iletileri girintili yapmak için yöntemini kullanın
Indent
:Debug.Indent()
Seçili değişkenlerin içeriğini görüntülemek için yöntemini aşağıdaki gibi kullanın
WriteLine
:Debug.WriteLine("The product name is " & sProdName) Debug.WriteLine("The available units on hand are " & iUnitQty) Debug.WriteLine("The per unit cost is " & dUnitCost)
Mevcut bir nesnenin
WriteLine
ad alanını ve sınıf adını görüntülemek için yöntemini de kullanabilirsiniz. Örneğin, aşağıdaki kod Çıkış penceresinde ad alanını görüntülerSystem.Xml.XmlDocument
:Dim oxml As New System.Xml.XmlDocument() Debug.WriteLine(oxml)
Çıkışı düzenlemek için, yönteminin isteğe bağlı, ikinci giriş parametresi
WriteLine
olarak bir kategori ekleyebilirsiniz. Bir kategori belirtirseniz, Çıkış penceresi iletisinin biçimi "category: message" olur. Örneğin, aşağıdaki kodun ilk satırında Çıkış penceresinde "Alan: Ürün adı Pencere Öğesidir" ifadesi görüntülenir: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")
Çıkış penceresi iletileri yalnızca belirlenmiş bir koşul sınıfın yöntemini
Debug
kullanarakWriteLineIf
true olarak değerlendiriyorsa görüntüleyebilir. Değerlendirilecek koşul, yöntemin ilk giriş parametresidirWriteLineIf
. İkinci parametresiWriteLineIf
, yalnızca ilk parametredeki koşul true olarak değerlendirilirse görüntülenen iletidir.Debug.WriteLineIf(iUnitQty > 50, "This message WILL appear") Debug.WriteLineIf(iUnitQty < 50, "This message will NOT appear")
Çıkış penceresinin
Debug
yalnızca belirtilen bir koşul false olarak değerlendirilirse iletiyi görüntülemesi için sınıfının Assert yöntemini kullanın:Debug.Assert(dUnitCost > 1, "Message will NOT appear") Debug.Assert(dUnitCost < 1, "Message will appear")
TextWriterTraceListener
Konsol penceresi () ve Output.txt ()tr2
tr1
adlı bir metin dosyası için nesneleri oluşturun ve ardından her nesneyi koleksiyonaDebug
Listeners
ekleyin: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)
Okunabilirlik için yöntemini kullanarak
Unindent
sınıfın oluşturduğu sonraki iletilerin girintisiniDebug
kaldırın. veUnindent
yöntemlerini birlikte kullandığınızdaIndent
, okuyucu çıkışı grup olarak ayırt edebilir.Debug.Unindent() Debug.WriteLine("Debug Information-Product Ending")
Her Dinleyici nesnesinin tüm çıkışını aldığından emin olmak için sınıf arabellekleri için yöntemini çağırın
Flush
Debug
:Debug.Flush()
Trace sınıfını kullanma
Bir uygulamanın yürütülmesini Trace
izleyen iletiler oluşturmak için sınıfını da kullanabilirsiniz. Trace
ve Debug
sınıfları, aşağıdakiler dahil olmak üzere çıkış üretmek için aynı yöntemlerin çoğunu paylaşır:
WriteLine
WriteLineIf
Indent
Unindent
Assert
Flush
ve sınıflarını Trace
Debug
aynı uygulamada ayrı ayrı veya birlikte kullanabilirsiniz. Hata Ayıklama Çözümü Yapılandırması projesinde hem hem Debug
de Trace
çıkış etkindir. Proje, bu sınıfların her ikisinden de tüm Dinleyici nesnelerine çıkış oluşturur. Ancak, Bir Sürüm Çözümü Yapılandırması projesi yalnızca bir Trace
sınıftan çıkış oluşturur. Release Solution Configuration projesi tüm Debug
sınıf yöntemi çağrılarını 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()
Çalıştığını doğrulayın
Hata Ayıklama'nın geçerli çözüm yapılandırması olduğundan emin olun.
Çözüm Gezgini penceresi görünmüyorsa, bu pencereyi görüntülemek için CTRL+ALT+L tuş bileşimine basın.
conInfo'ya sağ tıklayın ve ardından Özellikler'e tıklayın.
conInfo özellik sayfasının sol bölmesindeki Yapılandırma klasörünün altında okun Hata Ayıklama'yı gösterdiğinden emin olun.
Yapılandırma klasörünün üst kısmındaki Yapılandırma açılan liste kutusunda Etkin (Hata Ayıkla) veya Hata Ayıkla'ya ve ardından Tamam'a tıklayın.
Çıkış penceresini görüntülemek için CTRL+ALT+O tuşlarına basın.
Kodu çalıştırmak için F5 tuşuna basın. Onaylama Başarısız oldu iletişim kutusu görüntülendiğinde Yoksay'a tıklayın.
Konsol penceresinde ENTER tuşuna basın. Program bitmeli ve Çıkış penceresi aşağıdaki çıkışı göstermelidir:
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
Konsol penceresi ve Output.txt dosyası aşağıdaki çıkışı göstermelidir:
(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
Tam kod listesi
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 TextWriter`Trace`Listener(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
Sorun giderme
Çözüm yapılandırma türü Release ise,
Debug
sınıf çıkışı yoksayılır.Belirli bir hedef için bir
TextWriterTraceListener
sınıf oluşturduktan sonra veTextWriterTraceListener
Debug
sınıflarındanTrace
çıkış alır. Bu, sınıfına eklemek için veyaDebug
sınıfının yönteminiTrace
kullanıp kullanmadığınızdanAdd
Listeners
bağımsız olarakTextWriterTraceListener
gerçekleşir.ve
Debug
sınıflarındaTrace
aynı hedef için bir Dinleyici nesnesi eklerseniz, çıkışı oluşturup oluşturmadığınaDebug
Trace
bakılmaksızın her çıkış satırı yinelenir.Dim tr1 As New TextWriterTraceListener(System.Console.Out) Debug.Listeners.Add(tr1) Dim tr2 As New TextWriterTraceListener(System.Console.Out) Trace.Listeners.Add(tr2)
Başvurular
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin