Debug 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供一組可協助偵錯程序代碼的方法和屬性。
public ref class Debug abstract sealed
public ref class Debug sealed
public static class Debug
public sealed class Debug
type Debug = class
Public Class Debug
Public NotInheritable Class Debug
- 繼承
-
Debug
範例
下列範例會使用 Debug 來指出程式的開始和結束。 此範例也會使用 Indent 和 Unindent 來區分追蹤輸出。
// Specify /DDEBUG when compiling.
#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
int main( void )
{
#if defined(DEBUG)
Debug::Listeners->Add( gcnew TextWriterTraceListener( Console::Out ) );
Debug::AutoFlush = true;
Debug::Indent();
Debug::WriteLine( "Entering Main" );
#endif
Console::WriteLine( "Hello World." );
#if defined(DEBUG)
Debug::WriteLine( "Exiting Main" );
Debug::Unindent();
#endif
return 0;
}
// Specify /d:DEBUG when compiling.
using System;
using System.Data;
using System.Diagnostics;
class Test
{
static void Main()
{
Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
Debug.AutoFlush = true;
Debug.Indent();
Debug.WriteLine("Entering Main");
Console.WriteLine("Hello World.");
Debug.WriteLine("Exiting Main");
Debug.Unindent();
}
}
' Specify /d:DEBUG=True when compiling.
Imports System.Data
Imports System.Diagnostics
Class Test
Shared Sub Main()
Debug.Listeners.Add(New TextWriterTraceListener(Console.Out))
Debug.AutoFlush = True
Debug.Indent()
Debug.WriteLine("Entering Main")
Console.WriteLine("Hello World.")
Debug.WriteLine("Exiting Main")
Debug.Unindent()
End Sub
End Class
備註
若要讓您的程式代碼更健全,而不會影響出貨產品的效能和程式代碼大小,請使用 Debug 類別中的方法列印偵錯資訊,並使用判斷提示檢查邏輯。
這個類別提供顯示 Assert 對話框的方法,以及發出一律會失敗的判斷提示。 這個類別提供下列變化中的寫入方法:
BooleanSwitch 和 TraceSwitch 類別提供動態控制追蹤輸出的方法。 針對 .NET Framework 應用程式,您可以修改這些參數的值,而不需重新編譯您的應用程式。 如需在 .NET Framework 應用程式中使用組態檔設定參數的詳細資訊,請參閱 Switch 類別和 追蹤參數 一文。
您可以將 TraceListener 實體新增至或移除 Listeners 集合中的實例,以自定義追蹤輸出的目標。 Debug 和 Trace 類別會分享 Listeners 集合:將追蹤接聽程式新增至任一類別會將接聽程式新增至兩者。 根據預設,DefaultTraceListener 類別會發出追蹤輸出。
注意
如果追蹤接聽程式所使用的資源無法使用,將追蹤接聽程式新增至 Listeners 集合可能會導致在追蹤時擲回例外狀況。 擲回的條件和例外狀況取決於追蹤接聽程式,因此無法在此文章中列舉。 在 try
/catch
區塊中,對 Debug 方法的呼叫來偵測及處理追蹤接聽程式的任何例外狀況可能很有用。
您可以使用 Indent 方法或 IndentLevel 屬性來修改縮排層級。 若要修改縮排間距,請使用 IndentSize 屬性。 您可以藉由將 AutoFlush 屬性設定為 true
,指定是否要在每次寫入之後自動排清輸出緩衝區。
針對 .NET Framework 應用程式,您可以編輯應用程式的組態檔來設定 Debug 的 AutoFlush 和 IndentSize。 組態檔的格式應該如下列範例所示。
<configuration>
<system.diagnostics>
<trace autoflush="true" indentsize="7" />
</system.diagnostics>
</configuration>
ConditionalAttribute 屬性會套用至 Debug的方法。 除非 DEBUG
定義為條件式編譯符號,否則支援 ConditionalAttribute 會忽略對這些方法的呼叫。 請參閱編譯程序的檔,以判斷是否支援 ConditionalAttribute,以及定義條件式編譯符號的語法。
注意
在 Visual Studio C# 和 Visual Basic 專案中,預設會針對偵錯組建定義 DEBUG
條件式編譯符號,而偵錯和發行組建都會定義 TRACE
符號。 如需 Visual C++ 中條件式偵錯的相關信息,請參閱 Debug 類別 (C++/CLI)。
若要在 C# 中定義 DEBUG
條件式編譯符號,請在使用命令行編譯程式代碼時,將 /d:DEBUG
選項新增至編譯程式命令行,或將 #define DEBUG
新增至檔案頂端。 在 Visual Basic 中,將 [/d:DEBUG=True
] 選項新增至編譯程式命令行,或將 #Const DEBUG=True
新增至檔案。
屬性
AutoFlush | |
IndentLevel |
取得或設定縮排層級。 |
IndentSize |
取得或設定縮排中的空格數目。 |
Listeners |
取得監視偵錯輸出的接聽程式集合。 |
方法
適用於
執行緒安全性
此類型是安全線程。