特製化診斷
如果偵錯或可檢視性不足,.NET 會支援其他診斷機制。
使用事件來源進行追蹤
事件來源可讓您收集 .NET 處理序內所發生狀況的詳細診斷資訊。 其中包括執行階段、GC、程式庫和應用程式程式碼的遙測資訊。
事件源數據可以使用 System.Diagnostics.Tracing.EventListener API 或外部診斷工具進行收集,例如 Visual Studio、dotnet-monitor、dotnet-trace、PerfView 和 Perfcollect 腳本。 使用外部工具來收集追蹤內的事件來源資料通常用於效能分析。
在容器中收集診斷
非容器化 Linux 環境中的相同診斷工具也可以用來收集容器中的診斷。 只需要進行一些使用方式變更,以確保工具可在 Docker 容器中運作。
EventPipe
EventPipe 是執行階段元件,可用來收集追蹤資料,類似於 ETW 或 LTTng。 EventPipe 的目標是讓 .NET 開發人員能輕鬆地追蹤其 .NET 應用程式,而不需要依賴平台專用的 OS 原生元件,例如 ETW 或 LTTng。
EventPipe 是許多診斷工具背後的機制。 其可用於取用執行階段所發出的事件,以及以 EventSource 撰寫的自訂事件。
傾印
傾印是檔案,其中包含傾印建立時的程序快照集。 傾印可用於檢查應用程式的狀態以便進行偵錯。
符號
符號是原始程式碼與編譯器所產生的二進位之間的對應。 .NET 偵錯工具和追蹤工具經常使用傾印來解析原始程式碼行號、區域變數名稱,以及其他類型的診斷資訊。
診斷連接埠
.NET 執行階段可公開服務端點,允許其他處理序傳送診斷命令,並透過 IPC 通道接收回應。 此端點稱為「診斷連接埠」。 命令可以傳送至診斷連接埠,以:
- 擷取記憶體傾印。
- 啟動 EventPipe 追蹤。
- 要求用於啟動該應用程式的命令列。
DiagnosticSource 和 DiagnosticListener
DiagnosticSource 模組允許檢測程式碼,供實際執行期間記錄豐富的資料承載,以在進行檢測的處理序內取用。 在執行時間,取用者可以動態地探索資料來源,並訂閱感興趣的資料來源。 System.Diagnostics.DiagnosticSource 的設計允許內含式工具存取豐富資料,例如透過 OpenTelemetry 檢測程式庫。 DiagnosticSource 資料也可以透過 EventPipe 輸出,這可讓專用工具收集豐富的診斷資料。 |