1. 概觀
開發過程中難免需要偵錯與日誌輸出,使用 Trace 物件無論在 Debug 模式下或 Release 模式下執行的程式,都能進行即時追蹤(VS 執行程式時 DebugView 無法監控到,直接雙擊 exe 執行監控即可)。順便測試在 .NET8 中,基於 AOT 發佈與一般模式發佈的應用程式,使用 DebugView 工具檢視 Trace.Write 輸出的偵錯資訊。
2. DebugView
DebugView 是一個應用程式,可讓您監視本機系統上或透過 TCP/IP 存取的網路上任何電腦的偵錯輸出。它能同時顯示核心模式與 Win32 偵錯輸出,因此無需偵錯器即可擷取應用程式或裝置驅動程式產生的偵錯輸出,也無需修改應用程式或驅動程式來使用非標準的偵錯輸出 API。

使用方式非常簡單,以系統管理員身分啟動後,勾選 Options 中的以下幾項即可(當我們編寫的 .NET 程式執行後,會自動擷取輸出的訊息內容)。

3. 測試程式碼
using System.Diagnostics;
namespace TraceAOT
{
internal class Program
{
static void Main(string[] args)
{
//指定Trace輸出的日誌檔名
Trace.Listeners.Add(new TextWriterTraceListener("MyTraceListeners"));
for (int i = 0; i < 10; i++)
{
Thread.Sleep(1000);
//在滿足前面的條件時輸出Trace資訊(同時也向Listeners新增資訊)
Trace.WriteLineIf(i==5, "Trace message.");
}
//Flush完成本次輸出
Trace.Flush();
Console.WriteLine("OK");
Console.Read();
}
}
}
4. 測試結果

5. 結論
DebugView 工具在基於 .NET 8 無論是 AOT 或一般發佈的應用程式中,都能正常使用。Trace 物件無論在 Debug 模式下或 Release 模式下執行的程式,都能進行即時追蹤,大幅簡化了我們追蹤偵錯的流程。