分享方式:


使用快照偵錯工具對 .NET 應用程式中的例外狀況進行偵錯

啟用時,快照調試程式會在即時 .NET 應用程式中發生例外狀況時,自動收集原始程式碼和變數的偵錯快照集。 Application Insights 中的快照偵錯工具:

  • 從 Web 應用程式監視系統產生的記錄。
  • 對最常擲回的例外狀況收集快照集。
  • 提供診斷生產環境中的問題所需的資訊。

深入了解快照偵錯工具和 Snapshot Uploader 的程序。

支援的應用程式和環境

本節列出支援的應用程式和環境。

應用程式

快照集集合適用於:

環境

支援下列環境:

注意

不支援用戶端應用程式 (例如,WPF、Windows Forms 或 UWP)。

使用快照偵錯工具的必要條件

套件和組態

權限

快照偵錯工具的運作方式

Snapshot Collector 會實作為 Application Insights 遙測處理器。 當您的應用程式執行時,Snapshot Collector 遙測處理器會新增至應用程式的系統產生的記錄管線。

重要

快照集可能包含變數和參數值中的個人資料或其他敏感性資訊。 快照集資料會儲存在與 Application Insights 資源相同的區域中。

快照偵錯工具程序

快照偵錯工具程序會以 TrackException 方法開始和結束。 程序快照集是執行中程序的暫止複製品,因此您的使用者幾乎不會遇到中斷。 在一般案例中:

  1. 您的應用程式擲回 TrackException

  2. 快照偵錯工具藉由訂閱 AppDomain.CurrentDomain.FirstChanceException 事件來監視擲回的例外狀況。

  3. 問題識別碼的計數器遞增。

    • 當計數器達到 ThresholdForSnapshotting 值時,問題識別碼就會新增至收集計畫。

    注意

    ThresholdForSnapshotting 的預設最小值為 1。 使用此值時,您的應用程式必須觸發相同的例外狀況兩次,才會建立快照集。

  4. 計算例外狀況事件的問題識別碼,並與收集計畫中的問題識別碼進行比較。

  5. 如果兩者的問題識別碼相符,便會建立執行中程序的快照集

    • 快照集獲指派一個唯一的識別碼,而例外狀況則標有該識別碼的戳記。

    注意

    快照集建立速率受限於 SnapshotsPerTenMinutesLimit 設定。 根據預設,限制為每隔 10 分鐘建立一個快照集。

  6. FirstChanceException 處理常式傳回後,擲回的例外狀況就會正常處理。

  7. 例外狀況再次到達 TrackException 方法,並與快照集識別碼一起回報給 Application Insights。

注意

如果您想要在 Visual Studio 中進行偵錯時產生快照集,請將 IsEnabledInDeveloperMode 設定為 true

Snapshot Uploader 程序

在快照偵錯工具的程序繼續執行並提供流量給使用者,但偶而會中斷的情況下,快照集會移交給 Snapshot Uploader 程序。 在一般案例中,快照集上傳程式:

  1. 建立小型傾印。

  2. 將小型傾印連同任何相關的符號 (.pdb) 檔案上傳至 Application Insights。

注意

每日可上傳的快照集不可超過 50 個。

如果您已啟用快照偵錯工具,但未看到快照集,請參閱疑難排解指南

升級快照調試程式

快照調試程式會透過內建預安裝的 Application Insights 網站擴充功能自動升級。

手動新增 Application Insights 網站延伸模組,讓快照調試程式保持最新狀態已被取代。

負荷

快照偵錯工具是專為在生產環境中使用而設計。 預設設定包含速率限制,以將對您應用程式的影響降到最低。

不過,您可能會遇到與快照偵錯工具相關聯的小型 CPU、記憶體和 I/O 額外負荷,例如:

  • 應用程式中有擲回的例外狀況時
  • 如果例外狀況處理常式決定建立快照
  • 呼叫 TrackException

儲存快照偵錯工具所擷取的資料不須額外付費

請參閱您可能會遇到快照偵錯工具額外負荷的範例案例。

限制

本節討論快照偵錯工具的限制。

  • 資料保留

    偵錯快照集會儲存 15 天。 預設資料保留原則會就個別的應用程式進行設定。 如果您需要增加此值,您可以在 Azure 入口網站中建立支援案例,以提出增加的要求。 針對每個 Application Insights 執行個體,每天最多允許 50 個快照集。

  • 發佈符號

    快照偵錯工具需要生產伺服器上的符號檔案才能:

    • 將變數解碼
    • 在 Visual Studio 中提供偵錯體驗

    根據預設,Visual Studio 2017 15.2+ 版會在發佈至 App Service 時,發佈版本組建的符號。

    在舊版中,您必須將下列這一行新增至發佈設定檔 .pubxml 檔案,才會在發行模式中將符號發佈:

         <ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>
    

    若為 Azure 計算和其他類型,請確定符號檔案:

    • 在主要應用程式 .dll 的相同資料夾中 (通常是 wwwroot/bin),或者
    • 可在目前的路徑上取得。

    如需不同可用符號選項的詳細資訊,請參閱 Visual Studio 文件。 如需最佳結果,建議您使用「完整」、「可攜式」或「內嵌」

  • 最佳化的組建

    在某些情況下,由於 JIT 編譯器所套用的最佳化,因此無法在版本組建中檢視本機變數。

    不過,在 App Service 中,快照偵錯工具可以將屬於其收集計畫一部分的擲回方法反最佳化。

    提示

    在 App Service 的執行個體中安裝 Application Insights 網站延伸模組,以取得反最佳化支援。

下一步

針對您的應用程式啟用 Application Insights 快照偵錯工具: