分享方式:


使用快照偵錯工具針對 Azure 虛擬機器上的即時 ASP.NET 應用程式和 Azure 虛擬機器擴展集進行偵錯

[快照偵錯工具] 會在您感興趣的程式碼執行時,擷取實際執行應用程式的快照集。 若要指示偵錯工具擷取快照集,您可以在程式碼中設定快照點和記錄點。 偵錯工具可讓您清楚了解發生什麼問題,而不會影響實際執行應用程式的流量。 快照集偵錯工具可協助您大幅縮短為解決出現在生產環境之問題所花費的時間。

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

在此教學課程中,您需要:

  • 啟動快照偵錯工具
  • 設定快照點及檢視快照
  • 設定記錄點

必要條件

  • Azure 虛擬機器 (VM) 和 Azure 虛擬機器擴展集的快照偵錯工具僅適用於具備 Azure 開發工作負載的 Visual Studio 2019 Enterprise 或更高版本。 (您可以在 [個別元件] 索引標籤下的 [偵錯和測試]>[快照偵錯工具] 底下找到它。)

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

  • 快照集集合適用於下列 Azure 虛擬機器\虛擬機器擴展集 Web 應用程式:

    • 執行 .NET Framework 4.6.1 或更新版本的 ASP.NET 應用程式。
    • 在 Windows 上執行 .NET Core 2.0 或更新版本的 ASP.NET Core 應用程式。

    注意

    在 32 位元 Windows 上執行的 Visual Studio Enterprise 將無法檢視快照集。

開啟專案並啟動快照偵錯工具

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

    重要

    若要進行快照集偵錯,需開啟發行至您 Azure VM\虛擬機器擴展集服務的相同版本原始程式碼

  2. 選擇 [偵錯] > [附加快照偵錯工具...]。選取您的 Web 應用程式部署所在的 Azure VM\虛擬機器擴展集和 Azure 儲存體帳戶,然後按一下 [附加]。 快照偵錯工具也支援 Azure Kubernetes ServiceAzure App Service

    Launch the snapshot debugger from the Debug menu

    Select Azure Resource

    重要

    第一次為 VM 選取 [附加快照偵錯工具] 時,IIS 會自動重新啟動。 第一次為虛擬機器擴展集選取 [附加快照偵錯工具] 時,需要手動升級虛擬機器擴展集的每個執行個體。

    注意

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

    模組的中繼資料將不會一開始就啟動,請瀏覽至 Web 應用程式,[開始收集] 按鈕會變成作用中。 Visual Studio 現在已經處於快照集偵錯模式。

    Snapshot debugging mode

    注意

    對於 VMSS,使用者需在第一次附加快照偵錯工具之後,手動升級虛擬機器擴展集中的執行個體。

    載入 Azure VM\虛擬機器擴展集 的所有模組時,[模組]視窗會向您顯示 (選擇 [偵錯] > [Windows] > [模組] 以開啟此視窗)。

    Check the Modules window

設定快照點

  1. 在程式碼編輯器中,按一下所需程式碼行左側的裝訂邊以設定快照點。 確定這是您將執行的程式碼。

    Set a snappoint

  2. 按一下 [開始收集] 以開啟快照點。

    Turn on the snappoint

    提示

    檢視快照點時,您無法逐步檢視,但可以在程式碼中置入多個快照點,隨著不同行的程式碼執行。 如果程式碼中有多個快照點,快照偵錯工具會確定相對應的快照集是來自相同的使用者工作階段。 就算有許多使用者叫用您的應用程式,快照偵錯工具也會這樣做。

拍攝快照集

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

檢查快照集資料

  1. 叫用快照點時,[診斷工具] 視窗中會顯示快照點。 若要開啟此視窗,請選擇 [偵錯] > [Windows] > [顯示診斷工具]

    Open a snappoint

  2. 按兩下快照點以在程式碼編輯器中開啟快照點。

    Inspect snapshot data

    您可以從這個檢視,將滑鼠移至變數上方以檢視 DataTips、使用 [區域]、[監看式],以及 [呼叫堆疊] 視窗,也可以評估運算式。

    網站本身是仍然是即時的且使用者不會受到影響。 每個快照點預設只會擷取一個快照集:擷取快照集之後,快照點就會關閉。 如果想要在快照點擷取另一個快照集,可以按一下 [更新集合] 以重新開啟快照點。

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

是否需要協助? 請參閱疑難排解和已知問題快照集偵錯的常見問題集頁面。

設定條件式快照點

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

建立條件式快照點

  1. 以滑鼠右鍵按一下快照點圖示 (空心球體) 並選擇 [設定]

    Choose Settings

  2. 在快照點設定視窗中輸入運算式。

    Type an expression

    在上圖中,只會在 visitor.FirstName == "Dan" 時才會建立快照點的快照集。

設定記錄點

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

建立記錄點

  1. 以滑鼠右鍵按一下快照點圖示 (藍色六邊形) 並選擇 [設定]

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

    Create a logpoint

  3. 您可以在 [訊息] 欄位中輸入想要記錄的新記錄訊息。 也可以在記錄訊息中變數的前後加上大括號,以評估它們。

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

    Logpoint data in the Diagnostic Tools window

    如果您選擇 [傳送到應用程式記錄檔],當叫用記錄點時,只要可以看到來自 System.Diagnostics.Trace (或在 .NET Core 中為 ILogger) (例如應用程式深入解析) 之訊息的位置,就會顯示訊息。

您已經在此教學課程中學到如何針對 Azure 虛擬機器和 Azure 虛擬機器擴展集使用快照偵錯工具。 您可以閱讀和此功能有關的更多詳細資料。