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 類別和如何:建立、初始化和設定追蹤參數。
您可以將實例新增 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 。 |
適用於
執行緒安全性
此型別具備執行緒安全。