共用方式為


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 集合中的實例,以自定義追蹤輸出的目標。 DebugTrace 類別會分享 Listeners 集合:將追蹤接聽程式新增至任一類別會將接聽程式新增至兩者。 根據預設,DefaultTraceListener 類別會發出追蹤輸出。

注意

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

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

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

<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

取得或設定值,指出每次寫入之後,是否應該在 Listeners 上呼叫 Flush()

IndentLevel

取得或設定縮排層級。

IndentSize

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

Listeners

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

方法

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

檢查條件;如果條件 false,則輸出指定的訊息,並顯示顯示呼叫堆棧的消息框。

Assert(Boolean, Debug+AssertInterpolatedStringHandler)

檢查條件;如果條件 false,則輸出指定的訊息,並顯示顯示呼叫堆棧的消息框。

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

檢查條件;如果條件 false,則輸出兩則訊息(簡單且格式化),並顯示顯示呼叫堆棧的消息框。

Assert(Boolean, String, String)

檢查條件;如果條件 false,則輸出兩個指定的訊息,並顯示顯示呼叫堆棧的消息框。

Assert(Boolean, String)

檢查條件;如果條件 false,則輸出指定的訊息,並顯示顯示呼叫堆棧的消息框。

Assert(Boolean)

檢查條件;如果條件 false,則會顯示顯示呼叫堆棧的消息框。

Close()

排清輸出緩衝區,然後在每個 Listeners上呼叫 Close 方法。

Fail(String, String)

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

Fail(String)

發出指定的錯誤訊息。

Flush()

排清輸出緩衝區,並導致緩衝的數據寫入至 Listeners 集合。

Indent()

將目前的 IndentLevel 增加一個。

Print(String, Object[])

將格式化字串後面接著行終止符寫入至 Listeners 集合中的追蹤接聽程式。

Print(String)

將訊息後面接著行終止符寫入至 Listeners 集合中的追蹤接聽程式。

Unindent()

將目前的 IndentLevel 減少一個。

Write(Object, String)

將類別名稱和物件的 ToString() 方法值寫入至 Listeners 集合中的追蹤接聽程式。

Write(Object)

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

Write(String, String)

將類別名稱和訊息寫入至 Listeners 集合中的追蹤接聽程式。

Write(String)

將訊息寫入至 Listeners 集合中的追蹤接聽程式。

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

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

WriteIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

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

WriteIf(Boolean, Object, String)

如果條件是 true,請將物件的 ToString() 方法的類別名稱和值寫入至 Listeners 集合中的追蹤接聽程式。

WriteIf(Boolean, Object)

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

WriteIf(Boolean, String, String)

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

WriteIf(Boolean, String)

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

WriteLine(Object, String)

將類別名稱和物件的 ToString() 方法值寫入至 Listeners 集合中的追蹤接聽程式。

WriteLine(Object)

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

WriteLine(String, Object[])

將格式化的訊息,後面接著行終止符寫入至 Listeners 集合中的追蹤接聽項。

WriteLine(String, String)

將類別名稱和訊息寫入至 Listeners 集合中的追蹤接聽程式。

WriteLine(String)

將訊息後面接著行終止符寫入至 Listeners 集合中的追蹤接聽程式。

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler, String)

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

WriteLineIf(Boolean, Debug+WriteIfInterpolatedStringHandler)

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

WriteLineIf(Boolean, Object, String)

如果條件是 true,請將物件的 ToString() 方法的類別名稱和值寫入至 Listeners 集合中的追蹤接聽程式。

WriteLineIf(Boolean, Object)

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

WriteLineIf(Boolean, String, String)

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

WriteLineIf(Boolean, String)

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

適用於

執行緒安全性

此類型是安全線程。

另請參閱