分享方式:


特製化診斷

如果偵錯或可檢視性不足,.NET 會支援其他診斷機制。

使用事件來源進行追蹤

事件來源可讓您收集 .NET 處理序內所發生狀況的詳細診斷資訊。 其中包括執行階段、GC、程式庫和應用程式程式碼的遙測資訊。

使用 System.Diagnostics.Tracing.EventListener API 或外部診斷工具 (例如 Visual Studiodotnet-monitordotnet-tracePerfViewPerfcollect 指令碼) 即可收集事件來源資料。 使用外部工具來收集追蹤內的事件來源資料通常用於效能分析。

在容器中收集診斷

非容器化 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 輸出,這可讓專用工具收集豐富的診斷資料。 |

另請參閱