Debug 類別

定義

提供一組方法和屬性,可協助偵錯程式碼。

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 來指出程式執行的開頭和結尾。 此範例也會使用 IndentUnindent 來區別追蹤輸出。

// 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 對話方塊的方法,以及發出一律會失敗的判斷提示。 這個類別提供下列變化的寫入方法:

BooleanSwitchTraceSwitch 類別提供動態控制追蹤輸出的方法。 對於.NET Framework應用程式,您可以修改這些參數的值,而不需重新編譯您的應用程式。 如需使用組態檔在 .NET Framework 應用程式中設定參數的資訊,請參閱 Switch 類別和追蹤參數一文。

您可以將實例新增 TraceListener 至集合或從 Listeners 集合中移除實例,以自訂追蹤輸出的目標。 集合 ListenersDebugTrace 類別共用;將追蹤接聽程式新增至任一類別會將接聽程式新增至兩者。 根據預設,類別 DefaultTraceListener 會發出追蹤輸出。

注意

如果追蹤接聽程式所使用的資源無法使用,將追蹤接聽程式新增至 Listeners 集合可能會導致擲回例外狀況。 所擲回的條件和例外狀況取決於追蹤接聽程式,且無法在此文章中列舉。 對 區塊中 try / catch 方法的 Debug 呼叫可能會很有用,以偵測及處理追蹤接聽程式的任何例外狀況。

您可以使用 方法或 IndentLevel 屬性來修改縮排 Indent 的層級。 若要修改縮排間距,請使用 IndentSize 屬性。 您可以指定是否要在每次寫入之後自動排清輸出緩衝區,方法是將 AutoFlush 屬性設定為 true

針對.NET Framework應用程式,您可以編輯應用程式的組態檔, AutoFlush 來設定 和 IndentSize Debug 。 組態檔的格式應該如下列範例所示。

<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

取得或設定數值,表示每次寫入後是否要在 Flush() 上呼叫 Listeners

IndentLevel

取得或設定縮排層級。

IndentSize

取得或設定縮排的空格數目。

Listeners

取得監視偵錯輸出的接聽項的集合。

方法

Assert(Boolean)

檢查條件;如果條件為 false,則顯示訊息方塊,該方塊會顯示呼叫堆疊。

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

檢查條件;如果條件為 false,則輸出指定的訊息,並顯示訊息方塊,該方塊會顯示呼叫堆疊。

Assert(Boolean, Debug+AssertInterpolatedStringHandler, Debug+AssertInterpolatedStringHandler)

檢查條件;如果條件為 false,則輸出指定的訊息,並顯示訊息方塊,該方塊會顯示呼叫堆疊。

Assert(Boolean, String)

檢查條件;如果條件為 false,則輸出指定的訊息,並顯示訊息方塊,該方塊會顯示呼叫堆疊。

Assert(Boolean, String, String)

檢查條件;如果條件為 false,則輸出兩個指定的訊息,並顯示訊息方塊,該方塊會顯示呼叫堆疊。

Assert(Boolean, String, String, Object[])

檢查條件;如果條件為 false,則會輸出兩個訊息 (簡單和格式化) 並且顯示列出呼叫堆疊的訊息方塊。

Close()

清除輸出緩衝區,然後對每個 Listeners 呼叫 Close 方法。

Fail(String)

發出指定的錯誤訊息。

Fail(String, String)

發出錯誤訊息和詳細錯誤訊息。

Flush()

清除輸出緩衝區,讓緩衝的資料寫入 Listeners 集合。

Indent()

將目前的 IndentLevel 加一。

Print(String)

將後面接著行結束字元的訊息寫入 Listeners 集合中的追蹤接聽項。

Print(String, Object[])

將後面接著行結束字元的格式化字串寫入 Listeners 集合中的追蹤接聽項。

Unindent()

將目前的 IndentLevel 減少一。

Write(Object)

將物件的 ToString() 方法值寫入 Listeners 集合中的追蹤接聽項。

Write(Object, String)

將物件之 ToString() 方法的分類名稱和值寫入 Listeners 集合中的追蹤接聽項。

Write(String)

將訊息寫入 Listeners 集合中的追蹤接聽項。

Write(String, String)

將分類名稱和訊息寫入 Listeners 集合中的追蹤接聽項。

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

如果 conditiontrue ,則會將類別名稱和訊息寫入集合中的 Listeners 追蹤接聽程式。

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

如果指定的條件為 true ,將類別名稱和訊息寫入集合中的 Listeners 追蹤接聽程式。

WriteIf(Boolean, Object)

如果條件為 true,則將物件的 ToString() 方法值寫入 Listeners 集合中的追蹤接聽項。

WriteIf(Boolean, Object, String)

如果條件為 true,則將物件之 ToString() 方法的分類名稱和值寫入 Listeners 集合中的追蹤接聽項。

WriteIf(Boolean, String)

如果條件為 true,則將訊息寫入 Listeners 集合中的追蹤接聽項。

WriteIf(Boolean, String, String)

如果條件是 true,則將分類名稱和訊息寫入 Listeners 集合中的追蹤接聽項。

WriteLine(Object)

將物件的 ToString() 方法值寫入 Listeners 集合中的追蹤接聽項。

WriteLine(Object, String)

將物件之 ToString() 方法的分類名稱和值寫入 Listeners 集合中的追蹤接聽項。

WriteLine(String)

將後面接著行結束字元的訊息寫入 Listeners 集合中的追蹤接聽項。

WriteLine(String, Object[])

將後面接著行結束字元的格式化訊息寫入 Listeners 集合中的追蹤接聽項。

WriteLine(String, String)

將分類名稱和訊息寫入 Listeners 集合中的追蹤接聽項。

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

如果指定的條件為 true ,則將訊息寫入集合中的 Listeners 追蹤接聽程式。

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

如果指定的條件為 true ,將類別名稱和訊息寫入集合中的 Listeners 追蹤接聽程式。

WriteLineIf(Boolean, Object)

如果條件為 true,則將物件的 ToString() 方法值寫入 Listeners 集合中的追蹤接聽項。

WriteLineIf(Boolean, Object, String)

如果條件為 true,則將物件之 ToString() 方法的分類名稱和值寫入 Listeners 集合中的追蹤接聽項。

WriteLineIf(Boolean, String)

如果條件為 true,則將訊息寫入 Listeners 集合中的追蹤接聽項。

WriteLineIf(Boolean, String, String)

如果條件是 true,則將分類名稱和訊息寫入 Listeners 集合中的追蹤接聽項。

適用於

執行緒安全性

此型別具備執行緒安全。

另請參閱