Trace 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供一組可協助您追蹤程式碼執行的方法與屬性。 此類別無法獲得繼承。
public ref class Trace sealed
public sealed class Trace
type Trace = class
Public NotInheritable Class Trace
- 繼承
-
Trace
範例
下列範例會使用 Trace 來指出程序執行的開頭和結尾。 此範例也會使用 Trace.Indent 和 Trace.Unindent 方法來區分追蹤輸出。 如需使用的 Trace更完整範例,請參閱 如何:將追蹤語句新增至應用程式程序代碼。
// Specify /DTRACE when compiling.
#using <System.dll>
using namespace System;
using namespace System::Diagnostics;
int main()
{
#if defined(TRACE)
Trace::Listeners->Add( gcnew TextWriterTraceListener( Console::Out ) );
Trace::AutoFlush = true;
Trace::Indent();
Trace::WriteLine( "Entering Main" );
#endif
Console::WriteLine( "Hello World." );
#if defined(TRACE)
Trace::WriteLine( "Exiting Main" );
Trace::Unindent();
#endif
return 0;
}
// Specify /d:TRACE when compiling.
using System;
using System.Diagnostics;
class Test
{
static void Main()
{
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.AutoFlush = true;
Trace.Indent();
Trace.WriteLine("Entering Main");
Console.WriteLine("Hello World.");
Trace.WriteLine("Exiting Main");
Trace.Unindent();
}
}
' Specify /d:TRACE=True when compiling.
Imports System.Diagnostics
Class Test
Shared Sub Main()
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))
Trace.AutoFlush = True
Trace.Indent()
Trace.WriteLine("Entering Main")
Console.WriteLine("Hello World.")
Trace.WriteLine("Exiting Main")
Trace.Unindent()
End Sub
End Class
備註
您可以使用 類別中的 Trace 屬性和方法來檢測發行組建。 檢測可讓您監視在實際設定中執行的應用程式健康情況。 追蹤可協助您隔離問題並加以修正,而不會干擾執行中的系統。
這個類別提供顯示 Assert 對話框的方法,以及發出一律 Fail會的判斷提示。 這個類別提供下列變化的寫入方法:
BooleanSwitch和 TraceSwitch 類別提供動態控制追蹤輸出的方法。 在 .NET Framework 應用程式中,您可以修改這些參數的值,而不需要重新編譯您的應用程式。 如需在 .NET Framework 應用程式中使用組態檔設定參數的資訊,請參閱 Switch 類別和如何:Create、初始化和設定追蹤參數。
您可以藉由將實例新增 TraceListener 至集合或從 Listeners 集合中移除實例,來自定義追蹤輸出的目標。 集合 Listeners 由 Debug 和 Trace 類別共用;將追蹤接聽程式新增至任一類別會將接聽程式新增至兩者。 根據預設,追蹤輸出會使用 DefaultTraceListener 類別發出。
注意
如果追蹤接聽程式所使用的資源無法使用,將追蹤接聽程式新增至 Listeners 集合可能會導致擲回例外狀況。 所擲回的條件和例外狀況取決於追蹤接聽程式,無法在此主題中列舉。 在區塊中try
/catch
對方法的呼叫Trace,以偵測及處理追蹤接聽程式的任何例外狀況可能很有用。
注意
如果您將追蹤接聽程式新增至部分信任的程序代碼,將會收到 SecurityException 例外狀況,因為新增追蹤接聽程式需要 UnmanagedCode 許可權。 若要追蹤在 Visual Studio 沙箱中執行的部分信任程式代碼,請勿新增追蹤接聽程式。 請改為在 [輸出] 視窗中檢視 Trace 和 Debug 訊息。
類別 Trace 提供屬性來取得或設定的 Indent 層級, IndentSize以及是否要在 AutoFlush 每次寫入之後。
在 .NET Framework 應用程式中,您可以編輯對應至應用程式名稱的組態檔,來設定 AutoFlush 和 IndentSizeTrace 。 組態檔的格式應該如下列範例所示:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="3" />
</system.diagnostics>
</configuration>
屬性 ConditionalAttribute 會套用至的 Trace方法。 除非TRACE
定義為條件式編譯符號,否則支援ConditionalAttribute忽略這些方法呼叫的編譯程式。 請參閱編譯程式的檔,以判斷是否 ConditionalAttribute 受到支援,以及定義條件式編譯符號的語法。
注意
在 Visual Studio 專案中,根據預設, DEBUG
條件式編譯符號會針對偵錯組建定義,而且 TRACE
會針對偵錯和發行組建定義符號。
若要在 C# 中定義 TRACE
條件式編譯符號,請在 /d:TRACE
您使用命令行編譯程式程式代碼時,將 選項新增至編譯程式命令行,或新增 #define TRACE
至檔案頂端。 在 Visual Basic 中,將 選項新增 /d:TRACE=True
至編譯程式命令行,或新增 #Const TRACE=True
至 檔案。
ConditionalAttribute C++ 編譯程式不支援。 若要提供對等的功能,您必須在 區塊中#if defined(TRACE) ... #endif
括住 方法Trace的呼叫,並將 選項新增/DTRACE
至編譯程式命令行或新增#define TRACE
至 檔案。
屬性
AutoFlush | |
CorrelationManager |
取得這項追蹤的執行緒相關管理員。 |
IndentLevel |
取得或設定縮排層級。 |
IndentSize |
取得或設定縮排的空格數目。 |
Listeners |
取得正在監視追蹤輸出的接聽程式集合。 |
UseGlobalLock |
取得或設定值,這個值表示是否應該使用全域鎖定。 |
方法
事件
Refreshing |
發生於需要從組態重新整理 時 TraceSource 。 |
適用於
執行緒安全性
此型別具備執行緒安全。