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 集合中移除實例,以自定義追蹤輸出的目標。 集合 Listeners 由 Debug 和 Trace 類別共用;將追蹤接聽程式新增至任一類別會將接聽程式新增至兩者。 根據預設,類別 DefaultTraceListener 會發出追蹤輸出。
注意
如果追蹤接聽程式所使用的資源無法使用,將追蹤接聽程式新增至 Listeners 集合可能會導致擲回例外狀況。 所擲回的條件和例外狀況取決於追蹤接聽程式,且無法在此文章中列舉。 在區塊中try
/catch
對方法進行呼叫Debug,以偵測及處理來自追蹤接聽程式的任何例外狀況可能很有用。
您可以使用 方法或 IndentLevel 屬性來修改縮排Indent的層級。 若要修改縮排間距,請使用 IndentSize 屬性。 您可以指定是否要在每次寫入之後自動排清輸出緩衝區,方法是將 AutoFlush 屬性設定為 true
。
針對 .NET Framework 應用程式,您可以編輯應用程式的組態檔,AutoFlush來設定 和 IndentSizeDebug 。 組態檔的格式應該如下列範例所示。
<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++ 中條件式偵錯的資訊,請參閱在 C++/CLI (偵錯類別) 。
若要在 C# 中定義 DEBUG
條件式編譯符號,請在您使用命令行編譯程式程式代碼時,將 /d:DEBUG
選項新增至編譯程式命令行,或新增 #define DEBUG
至檔案頂端。 在 Visual Basic 中,將 /d:DEBUG=True
選項新增至編譯程式命令行,或新增 #Const DEBUG=True
至檔案。
屬性
AutoFlush | |
IndentLevel |
取得或設定縮排層級。 |
IndentSize |
取得或設定縮排的空格數目。 |
Listeners |
取得監視偵錯輸出的接聽項的集合。 |
方法
適用於
執行緒安全性
此型別具備執行緒安全。