使用快照偵錯工具對 .NET 應用程式中的例外狀況進行偵錯
啟用時,快照調試程式會在即時 .NET 應用程式中發生例外狀況時,自動收集原始程式碼和變數的偵錯快照集。 Application Insights 中的快照偵錯工具:
- 從 Web 應用程式監視系統產生的記錄。
- 對最常擲回的例外狀況收集快照集。
- 提供診斷生產環境中的問題所需的資訊。
深入了解快照偵錯工具和 Snapshot Uploader 的程序。
支援的應用程式和環境
本節列出支援的應用程式和環境。
應用程式
快照集集合適用於:
- .NET Framework 4.6.2 和更新版本。
- Windows 上的 .NET 6.0 或更新版本。
環境
支援下列環境:
- Azure App Service
- Azure Functions
- 執行作業系統系列 4 或更新版本的 Azure 雲端服務
- 在 Windows Server 2012 R2 或更新版本上執行的 Azure Service Fabric
- 執行 Windows Server 2012 R2 或更新版本的 Azure 虛擬機器和 Azure 虛擬機器擴展集
- 執行 Windows Server 2012 R2 或更新版本或 Windows 8.1 或更新版本的內部部署虛擬或實體機器
注意
不支援用戶端應用程式 (例如,WPF、Windows Forms 或 UWP)。
使用快照偵錯工具的必要條件
套件和組態
- 在應用程式中包含 Snapshot Collector NuGet 套件。
- 在
ApplicationInsights.config
中設定收集參數。
權限
- 確認您已新增至目標 Application Insights 快照集的 Application Insights 快照偵錯工具角色。
快照偵錯工具的運作方式
Snapshot Collector 會實作為 Application Insights 遙測處理器。 當您的應用程式執行時,Snapshot Collector 遙測處理器會新增至應用程式的系統產生的記錄管線。
重要
快照集可能包含變數和參數值中的個人資料或其他敏感性資訊。 快照集資料會儲存在與 Application Insights 資源相同的區域中。
快照偵錯工具程序
快照偵錯工具程序會以 TrackException
方法開始和結束。 程序快照集是執行中程序的暫止複製品,因此您的使用者幾乎不會遇到中斷。 在一般案例中:
您的應用程式擲回
TrackException
。快照偵錯工具藉由訂閱
AppDomain.CurrentDomain.FirstChanceException
事件來監視擲回的例外狀況。問題識別碼的計數器遞增。
- 當計數器達到
ThresholdForSnapshotting
值時,問題識別碼就會新增至收集計畫。
注意
ThresholdForSnapshotting
的預設最小值為 1。 使用此值時,您的應用程式必須觸發相同的例外狀況兩次,才會建立快照集。- 當計數器達到
計算例外狀況事件的問題識別碼,並與收集計畫中的問題識別碼進行比較。
如果兩者的問題識別碼相符,便會建立執行中程序的快照集。
- 快照集獲指派一個唯一的識別碼,而例外狀況則標有該識別碼的戳記。
注意
快照集建立速率受限於
SnapshotsPerTenMinutesLimit
設定。 根據預設,限制為每隔 10 分鐘建立一個快照集。FirstChanceException
處理常式傳回後,擲回的例外狀況就會正常處理。例外狀況再次到達
TrackException
方法,並與快照集識別碼一起回報給 Application Insights。
注意
如果您想要在 Visual Studio 中進行偵錯時產生快照集,請將 IsEnabledInDeveloperMode
設定為 true
。
Snapshot Uploader 程序
在快照偵錯工具的程序繼續執行並提供流量給使用者,但偶而會中斷的情況下,快照集會移交給 Snapshot Uploader 程序。 在一般案例中,快照集上傳程式:
建立小型傾印。
將小型傾印連同任何相關的符號 (.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 快照偵錯工具: