在 Visual Studio 中對 Azure 雲端服務 (擴充支援) 服務進行偵錯
Visual Studio 提供偵錯 Azure 雲端服務(擴充支援)和虛擬機的不同選項。
必要條件
- Visual Studio (請參閱 [Visual Studio 下載] (https://visualstudio.microsoft.com/downloads/?cid=learn-onpage-download-cta)) 已安裝 Azure 開發 工作負載,以及已安裝個別元件 .NET Framework 專案和專案範本 。 請參閱修改 Visual Studio。
- Azure 帳戶。 如果您沒有 Azure 帳戶,請啟用適用於 Visual Studio 訂閱者的 Azure 權益或註冊免費試用。
在您的本機電腦上偵錯您的雲端服務
您可以使用 Azure 計算模擬器,在本機電腦上偵錯您的雲端服務,以節省時間和金錢。 透過在部署服務之前於本機偵錯服務,您可以改善可靠性和效能,而不需支付運算時間。 不過,某些錯誤可能只有當您在 Azure 中執行雲端服務本身時才會發生。 如果在發佈您的服務時啟用遠端偵錯,接著將偵錯工具附加至角色執行個體,則可以偵錯這些錯誤。
模擬器會模擬 Azure 運算服務,並在您的本機環境中執行,使得您可以在部署雲端服務之前對其測試和偵錯。 模擬器會處理您的角色執行個體的生命週期,並可讓您存取模擬的資源,例如本機儲存體。 當您從 Visual Studio 偵錯或執行您的服務時,它會自動啟動模擬器做為背景應用程式,然後將服務部署至模擬器。 當服務在本機環境中執行時,您可以使用模擬器來檢視服矛。 您可以執行完整版或精簡版的模擬器。 請參閱使用 Emulator Express 在本機執行雲端服務並進行偵錯。
在您的本機電腦上偵錯您的雲端服務
在功能表欄上,選取 [偵>錯開始偵錯] 以執行 Azure 雲端服務 (擴充支援) 專案。 或者,您可以按 F5。 您會看到正在啟動計算模擬器的訊息。 當模擬器啟動時,系統匣圖示可加以確認。
開啟通知區域中 Azure 圖示的捷徑功能表,然後選取 [顯示計算模擬器 UI] ,來顯示計算模擬器的使用者介面。
UI 的左方窗格會顯示目前已部署至計算模擬器的服務,以及每個服務正在執行的角色執行個體。 您可以選擇將在右窗格中顯示生命週期、記錄和診斷資訊的服務或角色。 如果您將焦點放在包含視窗的上邊界時,它會展開以填滿右方窗格。
選擇 [偵錯] 功能表上的命令,並在您的程式碼中設定中斷點,來逐步執行應用程式。 在偵錯工具中逐步執行應用程式時,窗格會隨著應用程式的目前狀態而更新。 當您停止偵錯時,應用程式部署會遭到刪除。 如果您的應用程式包含 Web 角色,而且您已設定 [啟動] 動作屬性來啟動 Web 瀏覽器,Visual Studio 會在瀏覽器中啟動您的 Web 應用程式。 如果您變更服務組態中角色的執行個體數目,您必須停止雲端服務,然後重新啟動偵錯,以便對此角色的新執行個體進行偵錯。
注意
停止執行或偵錯您的服務時,不會停止本機計算模擬器和儲存體模擬器。 您必須從通知區域明確停止它們。
測試 Azure 中的雲端服務進行偵錯
如果您使用本節中的程序,啟用雲端服務的遠端偵錯,則不會呈現效能降低,也不會產生額外費用。 不要對生產環境服務使用遠端偵錯,因為這可能會對正在使用該服務的用戶端造成不良影響。
啟用雲端服務的遠端偵錯 (延伸支援)
將端點新增至預設 msvsmon 連接埠的 ServiceDefinition.csdef。 對於 Visual Studio 2019,其是 4024。
<Endpoints> <InputEndpoint name="RemoteDebug" protocol="tcp" port="4024" localPort="4024" /> </Endpoints>
注意
其他版本的 Visual Studio 各有不同的連接埠 (遠端偵錯工具連接埠指派)。
開啟 Azure 專案的捷徑功能表,然後選取 [發佈] 。
選取 [預備] 環境和 [偵錯] 組態。
這只是指導方針。 您可以選擇在生產環境中執行測試環境。 不過,如果您在生產環境上啟用遠端偵錯,可能會對使用者造成不良影響。 您可以選擇 [發行] 組態,但 [偵錯] 組態會讓偵錯更容易。
請遵循雲端服務 (延伸支援) 所述的一般步驟,但選取 [啟用所有角色的遠端桌面] 核取方塊。
系統會要求為遠端桌面使用者建立使用者名稱和密碼,稍後將需要此使用者名稱和密碼登入該虛擬機器。
前進到下一個畫面、檢閱您的設定,並在準備就緒時,按一下 [發佈],等待部署完成。
登入 Azure 入口網站,並瀏覽至您想要偵錯的雲端服務 (延伸支援)。
選擇左側窗格中的 [角色和執行個體],然後選擇遠端偵錯時您有興趣的角色。
按一下右側 [角色執行個體] 彈出畫面中的 [連線],然後選擇 [連線] 按鈕以下載遠端桌面檔案,其可讓您登入虛擬機器。 使用您在上一個步驟中啟用遠端桌面時所建立的認證來登入。
在遠端 Azure 虛擬機器上,安裝 Visual Studio 2019 遠端工具,如遠端偵錯中所述。
從虛擬機器上的桌面中,執行命令 D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe。 務必以系統管理員身分執行。
接受提示以允許透過防火牆存取。 您應該會看到訊息,指出 msvsmon.exe 已開始接聽連線。
在 Azure 入口網站中,開啟資源群組並取得雲端服務 (延伸支援) 的公用 IP 位址。
將偵錯工具附加至 Azure 中的雲端服務 (延伸支援)
注意
只要可能,您應該使用 [發佈] 流程中選擇的 [偵錯] 設定進行偵錯,但如果您要偵錯 [發行] 設定,請在 Visual Studio 中,使用 Ctrl+Q 來搜尋「Just My Code」,然後在 [工具]>[選項]>[偵錯工具]>[一般] 中取消核取 [啟用 Just My Code]。 發行組建已最佳化,因此不會被視為「My Code」。
選擇 [偵錯]>[附加至處理序] (或按 Ctrl+Alt+P)。
將連線類型保留為 [預設值]。
使用您的 IP 位址和連接埠輸入連線目標:
{ipaddress}:4024
。將 [附加至] 設定為 [自動]。
使用與遠端桌面使用者相同的認證登入。
選取 [為所有使用者顯示處理序]。 如果您要偵錯背景工作角色,請附加至 WaWorkerHost.exe;如果您要偵錯 Web 角色,請附加至 w3wp.exe 處理序;對於 Web API 角色,其為 WaIISHost.exe。
設定中斷點 (瀏覽至該行,然後按 F9)、存取網站的公用 URL,然後重現要偵錯的案例。
啟用雲端服務的遠端偵錯 (延伸支援)
將端點新增至預設 msvsmon 連接埠的 ServiceDefinition.csdef。 對於 Visual Studio 2022,則為 4026;對於 Visual Studio 2019,其為 4024。
<Endpoints> <InputEndpoint name="RemoteDebug" protocol="tcp" port="4026" localPort="4026" /> </Endpoints>
注意
其他版本的 Visual Studio 各有不同的連接埠 (遠端偵錯工具連接埠指派)。
如果您要以 .NET 4.8 為目標,請務必在發佈雲端服務 (延伸支援) 時開啟 ServiceConfiguration.Cloud.cscfg 檔案,並檢查
ServiceConfiguration
元素上osFamily
屬性的值。 針對 .NET 4.8 專案,請使用osFamily="7"
。開啟 Azure 專案的捷徑功能表,然後選取 [發佈] 。
選取 [預備] 環境和 [偵錯] 組態。
這只是指導方針。 您可以選擇在生產環境中執行測試環境。 不過,如果您在生產環境上啟用遠端偵錯,可能會對使用者造成不良影響。 您可以選擇 [發行] 組態,但 [偵錯] 組態會讓偵錯更容易。
請遵循雲端服務 (延伸支援) 所述的一般步驟,但選取 [啟用所有角色的遠端桌面] 核取方塊。
系統會要求為遠端桌面使用者建立使用者名稱和密碼,稍後將需要此使用者名稱和密碼登入該虛擬機器。
前進到下一個畫面、檢閱您的設定,並在準備就緒時,按一下 [發佈],等待部署完成。
登入 Azure 入口網站,並瀏覽至您想要偵錯的雲端服務 (延伸支援)。
選擇左側窗格中的 [角色和執行個體],然後選擇遠端偵錯時您有興趣的角色。
按一下右側 [角色執行個體] 彈出畫面中的 [連線],然後選擇 [連線] 按鈕以下載遠端桌面檔案,其可讓您登入虛擬機器。 使用您在上一個步驟中啟用遠端桌面時所建立的認證來登入。
在遠端 Azure 虛擬機器上,安裝 Visual Studio 2022 遠端工具,如遠端偵錯中所述。
從虛擬機器上的桌面執行 命令 msvsmon.exe Visual Studio 安裝資料夾中的
Common7\IDE\Remote Debugger\x64
。 務必以系統管理員身分執行。接受提示以允許透過防火牆存取。 您應該會看到訊息,指出 msvsmon.exe 已開始接聽連線。
在 Azure 入口網站中,開啟資源群組並取得雲端服務 (延伸支援) 的公用 IP 位址。
將偵錯工具附加至 Azure 中的雲端服務 (延伸支援)
注意
只要可能,您應該使用 [發佈] 流程中選擇的 [偵錯] 設定進行偵錯,但如果您要偵錯 [發行] 設定,請在 Visual Studio 中,使用 Ctrl+Q 來搜尋「Just My Code」,然後在 [工具]>[選項]>[偵錯工具]>[一般] 中取消核取 [啟用 Just My Code]。 發行組建已最佳化,因此不會被視為「My Code」。
選擇 [偵錯]>[附加至處理序] (或按 Ctrl+Alt+P)。
將連線類型保留為 [預設值]。
使用您的 IP 位址和連接埠輸入連線目標:
{ipaddress}:4026
。將 [附加至] 設定為 [自動]。
使用與遠端桌面使用者相同的認證登入。
選取 [為所有使用者顯示處理序]。 如果您要偵錯背景工作角色,請附加至 WaWorkerHost.exe;如果您要偵錯 Web 角色,請附加至 w3wp.exe 處理序;對於 Web API 角色,其為 WaIISHost.exe。
設定中斷點 (瀏覽至該行,然後按 F9)、存取網站的公用 URL,然後重現要偵錯的案例。
在 Azure 中遠端偵錯的限制
遠端偵錯具有下列限制:
若啟用遠端偵錯,您無法在具有超過 25 個執行個體的任何角色中發佈雲端服務。
偵錯工具會使用連接埠 30400 至 30424、31400 至 31424,以及 32400 至 32424。 如果您嘗試使用這些任一連接埠,將無法發佈您的服務,Azure 的活動記錄檔中將會出現下列其中一個錯誤訊息:
- 根據 .csdef 檔案驗證 .cscfg 檔案時發生錯誤。
角色 'role' 端點
Microsoft.WindowsAzure.PlugIns.RemoteDebugger.Connector
保留的連接埠範圍 'range' 與已定義的連接埠或範圍重疊。 - 配置失敗。 請稍後重試、試著減少 VM 大小或角色執行個體的數目,或試著部署到不同的區域。
- 根據 .csdef 檔案驗證 .cscfg 檔案時發生錯誤。
角色 'role' 端點
偵錯 Azure App Service
可以偵錯 Azure App Service 中執行的程式,方法是使用 Visual Studio 中的 [附加至處理序] 對話方塊。
注意
這僅適用於從 Visual Studio 2022 17.1 開始的 Azure App Service。
偵錯 Windows Azure App Service
在 [偵錯] 底下,選取 [附加至處理序]。
將 [連線類型] 變更為 [Microsoft Azure App Service],然後選取 [尋找...]。
在開啟的對話方塊中,選取 [訂閱名稱]。
注意
必須登入 Microsoft 帳戶,此帳戶有權存取包含 Azure App Service 的訂閱。
依資源群組或資源類型篩選檢視,或依名稱搜尋。
接下來,選取您要偵錯的 App Service,然後選取 [確定]。
這會在您的 App Service 上啟用遠端偵錯,並顯示要附加的可用處理序清單。
選取您要附加的處理序,然後選擇 [附加] 以開始偵錯。
偵錯 Azure 虛擬機器
您可以在 Visual Studio 中使用伺服器總管偵錯 Azure 虛擬機器上執行的程式。 當您在 Azure 虛擬機器上啟用遠端偵錯時,Azure 會在虛擬機器上安裝遠端偵錯擴充功能。 然後,您可以附加至虛擬機器上的處理序,並像平常一樣偵錯。
注意
透過 Azure 資源管理員堆疊建立的虛擬機器可以使用 Visual Studio 2019 中的雲端總管進行遠端偵錯。 如需詳細資訊,請參閱 使用雲端總管管理 Azure 資源。
偵錯 Azure 虛擬機器
在伺服器總管中,展開 [虛擬機器] 節點並選取您要偵錯的虛擬機器節點。
開啟操作功能表,然後選取 [啟用偵錯功能] 。 當詢問您是否確定要在虛擬機器上啟用偵錯時,請按一下 [是] 。
Azure 會將遠端偵錯擴充功能安裝到虛擬機器以啟用偵錯。
遠端偵錯擴充功能安裝完成後,開啟虛擬機器的操作功能表,然後選取 [附加偵錯工具...]
Azure 會取得虛擬機器上處理序的清單,並將清單顯示在 [附加至處理序] 對話方塊。
在 [附加至處理序] 對話方塊中,選取 [選取] 以將結果清單限制為只顯示您要偵錯的程式碼類型。 您可以對 32 位元或 64 位元受控碼、機器碼或兩者進行偵錯。
選擇您想要在虛擬機器上偵錯的處理序,然後選取 [附加]。 例如,如果您想要在虛擬機器上偵錯 Web 應用程式,可以選擇 w3wp.exe 處理序。 如需詳細資訊,請參閱在 Visual Studio 中偵錯一或多個處理序和 Azure 角色架構。
建立 Web 專案和虛擬機器進行偵錯
發佈 Azure 專案之前,您可能會發現,在支援偵錯和測試案例,以及您可以在其中安裝測試和監視程式的受控制環境中測試它很有用。 執行這類測試的方式之一是在虛擬機器上遠端偵錯您的應用程式。
Visual Studio ASP.NET 專案提供選項,讓您建立可用於測試應用程式的實用虛擬機器。 虛擬機器包含經常需要的端點,例如 PowerShell、遠端桌面和 WebDeploy。
建立 Web 專案和虛擬機器進行偵錯
在 Visual Studio 中,建立新的 ASP.NET Web 應用程式。
在 [新增 ASP.NET 專案] 對話方塊中,於 [Azure] 區段的下拉式清單方塊中選取 [虛擬機器]。 維持選取 [建立遠端資源] 核取方塊。 選取 [確定] 以繼續操作。
[在 Azure 上建立虛擬機器] 對話方塊隨即出現。
注意
如果您還沒登入,將會要求您登入 Azure 帳戶。
選擇虛擬機器的各種設定,然後選取 [確定]。 如需詳細資訊,請參閱 虛擬機器 。
您輸入的 DNS 名稱會成為虛擬機器的名稱。
Azure 會建立虛擬機器,然後佈建並設定端點,例如遠端桌面和 Web Deploy。
虛擬機器完全設定好之後,請在伺服器總管中選取虛擬機器的節點。
開啟操作功能表,然後選取 [啟用偵錯功能] 。 當詢問您是否確定要在虛擬機器上啟用偵錯時,請按一下 [是] 。
Azure 會將遠端偵錯擴充功能安裝到虛擬機器以啟用偵錯。
發佈您的專案,如作法:使用 Visual Studio 中的單鍵發行來部署 Web 專案中所述。 因為您要在虛擬機器上偵錯,請在 [發佈 Web] 精靈的 [設定] 頁面上,選取 [偵錯] 做為組態。 這樣可確保程式碼符號在偵錯時可供使用。
如果稍早已部署專案,請在 [檔案發佈選項] 中,選取 [移除目的地的額外檔案]。
專案發佈之後,在「伺服器總管」中的虛擬機器操作功能表上,選取 [附加偵錯工具...]
Azure 會取得虛擬機器上處理序的清單,並將清單顯示在 [附加至處理序] 對話方塊。
在 [附加至處理序] 對話方塊中,選取 [選取] 以將結果清單限制為只顯示您要偵錯的程式碼類型。 您可以對 32 位元或 64 位元受控碼、機器碼或兩者進行偵錯。
選擇您想要在虛擬機器上偵錯的處理序,然後選取 [附加]。 例如,如果您想要在虛擬機器上偵錯 Web 應用程式,可以選擇 w3wp.exe 處理序。 如需詳細資訊,請參閱 在 Visual Studio 中偵錯一或多個處理序 。
相關內容
使用 Azure 診斷,從 Azure 中角色內執行的程式代碼記錄詳細資訊。 請參閱 使用 Azure 診斷收集記錄資料。
如需其他遠端偵錯案例,請參閱遠端偵錯。