Trace 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供一組可協助您追蹤程式碼執行的方法與屬性。 此類別無法獲得繼承。
public ref class Trace sealed
public sealed class Trace
type Trace = class
Public NotInheritable Class Trace
- 繼承
-
Trace
範例
以下範例用 Trace 來表示程式執行的開始與結束。 範例也使用 和 Trace.IndentTrace.Unindent 方法來區分追蹤輸出。 欲了解更完整的使用Trace範例,請參見「如何:在應用程式程式碼中新增追蹤陳述」。
// 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 類別的屬性和方法來製作 release build。 Instrumentation 讓你能監控實際環境中應用程式的健康狀況。 追蹤幫助你找出問題並修正,同時不會干擾運行中的系統。
此類別提供方法來顯示 Assert 對話框,並發出一個 Fail總是 的斷言。 這個類別提供下列變化中的寫入方法:
BooleanSwitch 和 TraceSwitch 類別提供動態控制追蹤輸出的方法。 在 .NET Framework 應用程式中,你可以修改這些交換器的值,而不必重新編譯應用程式。 關於如何在 .NET Framework 應用程式中使用設定檔設定交換器的資訊,請參閱 Switch 類別及 如何:建立、初始化及配置追蹤交換器。
您可以將 TraceListener 實體新增至或移除 Listeners 集合中的實例,以自定義追蹤輸出的目標。 Listeners 和 Debug 類別會分享 Trace 集合:將追蹤接聽程式新增至任一類別會將接聽程式新增至兩者。 預設情況下,追蹤輸出是使用 類別 DefaultTraceListener 來產生的。
Note
若追蹤監聽 Listeners 器使用的資源無法使用,則在追蹤時可能會拋出異常。 條件與拋出的例外取決於追蹤監聽器,且無法在本主題中列舉。 在 Tracetry/ 區塊中,對 catch 方法的呼叫來偵測及處理追蹤接聽程式的任何例外狀況可能很有用。
Note
如果你在部分受信任的程式碼中新增追蹤監聽器,會遇到 SecurityException 例外,因為新增追蹤監聽器需要 UnmanagedCode 權限。 要追蹤在 Visual Studio 沙盒中執行的部分受信任程式碼,請不要新增追蹤監聽器。 請在Trace視窗中查看 Debug AND 訊息。
該Trace類別提供屬性,用於取得或設定 的Indent層級,IndentSize以及每次寫入後是否 。AutoFlush
在 .NET Framework 應用程式中,你可以透過編輯與應用程式名稱對應的設定檔,設定 AutoFlush 的 IndentSize 和 Trace。 設定檔格式應如以下範例:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="3" />
</system.diagnostics>
</configuration>
ConditionalAttribute 屬性會套用至 Trace的方法。 除非 ConditionalAttribute 定義為條件式編譯符號,否則支援 TRACE 會忽略對這些方法的呼叫。 請參閱編譯程序的檔,以判斷是否支援 ConditionalAttribute,以及定義條件式編譯符號的語法。
Note
在Visual Studio專案中,預設為除錯建置定義 DEBUG 條件編譯符號,除錯與發佈建置則定義為 TRACE 符號。
若要在 C# 中定義 TRACE 條件式編譯符號,請在使用命令行編譯程式代碼時,將 /d:TRACE 選項新增至編譯程式命令行,或將 #define TRACE 新增至檔案頂端。 在 Visual Basic 中,將 [/d:TRACE=True] 選項新增至編譯程式命令行,或將 #Const TRACE=True 新增至檔案。
ConditionalAttribute C++ 編譯器不支援。 為了提供等效功能,你必須在區Trace塊中包含 的方法#if defined(TRACE) ... #endif呼叫,並在編譯器命令列中加入/DTRACE該選項,或將 add #define TRACE 加入檔案中。
屬性
| 名稱 | Description |
|---|---|
| AutoFlush | |
| CorrelationManager |
取得該線程的關聯管理器。 |
| IndentLevel |
取得或設定縮排等級。 |
| IndentSize |
取得或設定縮排中的空格數。 |
| Listeners |
取得監控追蹤輸出的監聽者集合。 |
| UseGlobalLock |
取得或設定一個值,指示是否應使用全域鎖。 |
方法
事件
| 名稱 | Description |
|---|---|
| Refreshing |
當 TraceSource 需要從設定中重新整理時會發生。 |
適用於
執行緒安全性
此類型是安全線程。