共用方式為


使用快照除錯工具對運行中 ASP.NET Azure Kubernetes Services 進行除錯

備註

快照偵錯功能已遭到棄置,並且在 Visual Studio 2022 及其後續版本中將不再可用。 雖然沒有確切的替代品,但還有其他工具可以提供有用的診斷:

當您感興趣的程式碼執行時,快照除錯工具會擷取生產中應用程式的快照集。 若要指示調試程式擷取快照集,您可以在程式代碼中設定快照點和記錄點。 除錯工具可讓您確切地查看問題的詳細資訊,而不會影響生產應用程式的使用量。 快照調試程式可協助您大幅減少解決生產環境中發生問題所需的時間。

快照點和記錄點與中斷點很相似,但和中斷點不的是,快照點不會在叫用時停止應用程式。 一般而言,在快照點擷取快照集需要 10-20 毫秒。

在本教學課程中,您將:

  • 啟動快照調試程式
  • 設定快照點並檢視快照集
  • 設定記錄點

先決條件

  • 適用於 Azure Kubernetes Services 的快照調試程式僅適用於具有 Azure 開發工作負載的 Visual Studio 2019 Enterprise 或更新版本。 (在 [個別元件] 索引標籤下,您會在 [偵錯和測試>] 下找到它快照除錯程式。)

    如果尚未安裝,請安裝 Visual Studio 2019 Enterprise

  • 快照集集合適用於下列 Azure Kubernetes Services Web 應用程式:

    • 在 Debian 9 上運行的 ASP.NET Core 應用程式,採用 .NET Core 2.2 或更新版本。

    • ASP.NET Core 應用程式在 Alpine 3.8 上於 .NET Core 2.2 或更新版本上執行。

    • ASP.NET Core 應用程式在 Ubuntu 18.04 上運行於 .NET Core 2.2 或更新版本。

      備註

      為了協助您在 AKS 中啟用快照調試功能,我們提供了一個 資源庫,其中包含一組示範 Docker 映像設定的 Dockerfiles

開啟專案並啟動快照調試程式

  1. 開啟您想要快照偵錯的專案。

    這很重要

    若要快照集偵錯,您必須開啟發佈到 Azure Kubernetes 服務上的相同版本的原始程式碼

  2. 選擇 [ 偵錯 > 附加快照調試程式...]。選取 Web 應用程式部署至的 AKS 資源和 Azure 記憶體帳戶,然後按兩下 [ 附加]。 快照調試程式也支援 Azure App ServiceAzure 虛擬機器及虛擬機器規模設定

    從 [偵錯] 功能表啟動快照調試程式

    選取 Azure 資源

    備註

    (Visual Studio 2019 16.2 版和更新版本)快照調試程式已啟用 Azure 雲端支援。 請確定您選取的 Azure 資源和 Azure 記憶體帳戶都是來自相同的雲端。 如果您有企業 Azure 合規性 設定的相關問題,請連絡您的 Azure 系統管理員。

Visual Studio 現在處於快照偵錯模式。

快照偵錯模式

[ 模組 ] 視窗將顯示 Azure App Service 中所有模組載入的時間(選擇 [ 偵錯 > Windows > 模組 ] 來開啟此視窗)。

檢查 [模組] 視窗

設定捕捉點

  1. 在程式碼編輯器中,按一下您感興趣的某行程式碼左邊的空白區來設定快照點。 確保是您知道能成功執行的程式碼。

    設定快照點

  2. 點擊 [開始收集] 以開啟快照點。

    啟用捕捉點

    小提示

    您無法在檢視快照集時逐步執行,但您可以在程式代碼中放置多個快照點,以遵循不同程式碼行的執行。 如果您的程式代碼中有多個快照點,快照調試程式可確保對應的快照集來自相同的用戶會話。 快照調試程式會執行此作業,即使有許多使用者叫用您的應用程式也一樣。

拍攝快照集

設定捕捉點之後,您可以手動移至網站的瀏覽器檢視並執行標示的程式代碼行以產生快照集,或等候使用者從其使用網站時產生快照集。

檢查快照數據

  1. 命中快照點時,快照會出現在 [診斷工具] 視窗中。 若要開啟此視窗,請選擇 [ 偵錯視窗 顯示診斷工具< c1 /> ]。

    開啟 Snappoint

  2. 雙擊截點以在程式碼編輯器中開啟快照。

    檢查快照集數據

    在此檢視中,您可以將滑鼠停留在變數上以檢視數據提示、使用 [ 局部變數]、[ 監看式] 和 [ 呼叫堆棧 ] 視窗,以及評估表達式。

    網站本身仍會實時運作,且使用者不會受到影響。 根據預設,每個快照點只會擷取一個快照:擷取快照之後,快照點就會關閉。 如果您想要在快照點擷取另一個快照,可以透過按一下 更新集合 來重新啟用快照點。

您也可以將更多快照點新增至您的應用程式,並使用 [ 更新集合 ] 按鈕加以開啟。

需要協助嗎? 請參閱疑難排解和已知問題以及快照調試常見問題頁面。

設定條件式快照點

如果很難在應用程式中重新建立特定狀態,請考慮使用條件式快照點。 條件式快照點可協助您控制何時擷取快照,例如當變數包含您想要檢查的特定的值時。 您可以使用表示式、篩選或命中次數來設定條件。

建立條件式快照點

  1. 以滑鼠右鍵按兩下快照點圖示(空心球體),然後選擇 [ 設定]。

    選擇 [設定]

  2. 在 [快照點設定] 視窗中,輸入表達式。

    輸入表達式

    在先前的圖示中,快照只有在visitor.FirstName == "Dan"處於快照點時才會拍攝。

設定記錄點

除了在點擊快照點時擷取快照集之外,您也可以設定快照點來記錄訊息(也就是建立記錄點)。 您可以設定記錄點,而不需要重新部署您的應用程式。 Logpoint 是虛擬執行的,對執行中的應用程式不會造成任何影響或副作用。

建立記錄點

  1. 以滑鼠右鍵按兩下快照點圖示(藍色六邊形),然後選擇 [ 設定]。

  2. 在 [快照點設定] 視窗中,選取 [ 動作]。

    建立記錄點

  3. 在 [ 訊息 ] 欄位中,您可以輸入要記錄的新記錄訊息。 您也可以將變數放在大括弧內,以評估記錄訊息中的變數。

    如果您選擇 [傳送至輸出視窗],當觸發記錄點時,訊息會出現在 [診斷工具] 視窗中。

    診斷工具視窗中的記錄點數據

    如果您選擇 傳送至應用程式日誌,當記錄點被觸發時,訊息會出現在您可以看到來自System.Diagnostics.Trace(或 .NET Core 中的ILogger)的訊息的任何位置,例如 App Insights

在本教學課程中,您已瞭解如何使用適用於 Azure Kubernetes 的快照調試程式。 您可能想要閱讀這項功能的詳細數據。