本頁是否能提供幫助?
您對此內容的意見反應十分重要。 請告訴我們您的想法。
其他意見反應?
剩餘 1500 個字元
匯出 (0) 列印
全部展開

在 Eclipse 中偵錯 Azure 應用程式

更新日期: 2015年3月

使用 Azure Toolkit for Eclipse 可讓您對應用程式進行偵錯,無論它們是在 Azure 中執行,還是在計算模擬器中執行 (如果您使用 Windows 做為作業系統)。下圖顯示用來啟用遠端偵錯的 [偵錯] 屬性對話方塊:

偵錯屬性

本教學課程假設您已有成功建立的應用程式,而且熟悉計算模擬器和 Azure 的部署。

我們將使用在 JSP 中使用 Azure 服務執行階段程式庫教學課程中的應用程式做為本主題的起始點。在繼續之前,請先建立該應用程式 (如果您尚未建立)。

note附註
只能在 Windows 上使用 Azure 模擬器。如果您使用 Windows 以外的作業系統,請略過本節。

  1. 在模擬器中建置測試專案:在 Eclipse 的專案總管中,以滑鼠右鍵按一下 [MyAzureProject]、按一下 [屬性]、按一下 [Azure],然後將 [建置目標] 設為 [在模擬器中測試]。

  2. 重建您的專案:從 Eclipse 功能表中,按一下 [專案],然後按一下 [全部建置]。

  3. 在 Eclipse 的 [專案總管] 中,以滑鼠右鍵按一下 [WorkerRole1]、按一下 [Azure],然後按一下 [偵錯]。

  4. 在 [WorkerRole1 偵錯屬性] 對話方塊中:

    1. 勾選 [啟用此角色的遠端偵錯]。

    2. 針對 [要使用的輸入端點],請使用工具組自動產生的預設端點,列示為 [偵錯 (public:8090, private:8090)]。

    3. 確定未勾選 [以已暫停模式啟動 JVM,等候偵錯工具連接] 選項。

      Important重要事項
      [以已暫停模式啟動 JVM,等候偵錯工具連接] 選項僅適用於計算模擬器中的進階偵錯案例 (不適用於雲端部署)。如果使用 [以已暫停模式啟動 JVM,等候偵錯工具連接] 選項,就會暫停伺服器的啟動程序,直到 Eclipse 偵錯工具連接到其 JVM。您可以將此選項用於使用計算模擬器的偵錯工作階段,但請勿將其用於雲端部署中的偵錯工作階段。伺服器的初始化發生在 Azure 啟動工作中,在啟動工作完成之前,Azure 雲端無法啟用公用端點。因此,如果在雲端部署中啟用此選項,啟動程序將無法順利完成,因為它無法接收來自外部 Eclipse 用戶端的連線。

    4. 按一下 [建立偵錯組態]。

  5. 在 [Azure 偵錯組態] 對話方塊中:

    1. 針對 [要偵錯的 Java 專案],選取 [MyHelloWorld] 專案。

    2. 針對 [設定偵錯目標],勾選 [Azure 計算模擬器]。

  6. 按一下 [確定],以關閉 [Azure 偵錯組態] 對話方塊。

  7. 按一下 [確定],以關閉 [WorkerRole1 偵錯屬性] 對話方塊。

  8. 在 Index.jsp 中設定中斷點:

    1. 在 Eclipse 的專案總管中,展開 [MyHelloWorld]、展開 [WebContent],然後按兩下 [index.jsp]。

    2. 在 index.jsp 中,以滑鼠右鍵按一下 Java 程式碼左側的藍色列,按一下 [切換中斷點],如下所示:

      設定中斷點

      如果您在 Java 程式碼左側的藍色列內看到中斷點圖示,表示中斷點已設定。

  9. 按一下 Azure 工具列上的 [在 Azure 模擬器中執行] 按鈕,以在計算模擬器中啟動應用程式。

  10. 在 Eclipse 的功能表中,按一下 [執行],然後按一下 [偵錯組態]。

  11. 在 [偵錯組態] 對話方塊中,展開位於左側窗格中的 [遠端 Java 應用程式]、選取 [Azure 模擬器 (WorkerRole1)],然後按一下 [偵錯]。

  12. 在計算模擬器指出應用程式正在執行後,請在您的瀏覽器中執行 http://localhost:8080/MyHelloWorld

    如果出現 [確認檢視方塊參數] 提示,請按一下 [是]。

    偵錯工作階段現在應會執行到中斷點設定所在的程式碼行。

此範例說明了如何在計算模擬器中偵錯,下一節將說明如何偵錯部署至 Azure 的應用程式。

security安全性 附註
此工具組目前對遠端 Java 偵錯的支援,主要用於在 Azure 計算模擬器中執行的部署。由於偵錯連線並不安全,因此您不應在生產部署中啟用遠端偵錯。如果您需要偵錯在 Azure 雲端中執行的應用程式,請使用預備部署,但請了解,如果有人知道您的雲端部署的 IP 位址,就可能有未經授權者存取您的偵錯工作階段,即使是在預備部署中亦然。

  1. 在模擬器中建置測試專案:在 Eclipse 的專案總管中,以滑鼠右鍵按一下 [MyAzureProject]、按一下 [屬性]、按一下 [Azure],然後將 [建置目標] 設為 [雲端部署]。

  2. 重建您的專案:從 Eclipse 功能表中,按一下 [專案],然後按一下 [全部建置]。

  3. 將應用程式部署至 Azure 中的預備環境。

    Important重要事項
    如前所述,強烈建議您在一般情況下應於計算模擬器中偵錯,如果後續需要額外的偵錯,才在預備環境中偵錯。建議您不要在生產環境中偵錯。

  4. 您的部署在 Azure 中準備就緒後,請從 Azure 管理入口網站取得部署的 DNS 名稱。預備部署的 DNS 名稱格式為 http://<guid>.cloudapp.net,其中,<guid> 是 Azure 所指派的 GUID 值。

  5. 在 Eclipse 的 [專案總管] 中,以滑鼠右鍵按一下 [WorkerRole1]、按一下 [Azure],然後按一下 [偵錯]。

  6. 在 [WorkerRole1 偵錯屬性] 對話方塊中:

    1. 勾選 [啟用此角色的遠端偵錯]。

    2. 針對 [要使用的輸入端點],請使用 [偵錯 (public:8090, private:8090)]。

    3. 確定未勾選 [以已暫停模式啟動 JVM,等候偵錯工具連接]。

      Important重要事項
      [以已暫停模式啟動 JVM,等候偵錯工具連接] 選項僅適用於計算模擬器中的進階偵錯案例 (不適用於雲端部署)。如果使用 [以已暫停模式啟動 JVM,等候偵錯工具連接] 選項,就會暫停伺服器的啟動程序,直到 Eclipse 偵錯工具連接到其 JVM。您可以將此選項用於使用計算模擬器的偵錯工作階段,但請勿將其用於雲端部署中的偵錯工作階段。伺服器的初始化發生在 Azure 啟動工作中,在啟動工作完成之前,Azure 雲端無法啟用公用端點。因此,如果在雲端部署中啟用此選項,啟動程序將無法順利完成,因為它無法接收來自外部 Eclipse 用戶端的連線。

    4. 按一下 [建立偵錯組態]。

  7. 在 [Azure 偵錯組態] 對話方塊中:

    1. 針對 [要偵錯的 Java 專案],選取 [MyHelloWorld] 專案。

    2. 針對 [設定偵錯目標],勾選 [Azure 雲端 (預備)]。

    3. 確定未勾選 [Azure 計算模擬器]。

    4. 針對 [主機],輸入預備部署的 DNS 名稱,但不含前置的 http://。例如 (請以您的 GUID 取代以下顯示的 GUID):

      4e616d65-6f6e-6d65-6973-526f62657274.cloudapp.net

  8. 按一下 [確定],以關閉 [Azure 偵錯組態] 對話方塊。

  9. 按一下 [確定],以關閉 [WorkerRole1 偵錯屬性] 對話方塊。

  10. 如果您尚未在 index.jsp 中設定中斷點,請加以設定:

    1. 在 Eclipse 的專案總管中,展開 [MyHelloWorld]、展開 [WebContent],然後按兩下 [index.jsp]。

    2. 在 index.jsp 中,以滑鼠右鍵按一下 Java 程式碼左側的藍色列,按一下 [切換中斷點],如下所示:

      設定中斷點
  11. 在 Eclipse 的功能表中,按一下 [執行],然後按一下 [偵錯組態]。

  12. 在 [偵錯組態] 對話方塊中,展開位於左側窗格中的 [遠端 Java 應用程式]、選取 [Azure 雲端 (WorkerRole1)],然後按一下 [偵錯]。

  13. 在您的瀏覽器中執行預備應用程式 (http://<guid>.cloudapp.net/MyHelloWorld);將 DNS 名稱中的 GUID 取代為 <guid>

    如果出現 [確認檢視方塊參數] 提示,請按一下 [是]。

    偵錯工作階段現在應會執行到中斷點設定所在的程式碼行。

    note附註
    如果您嘗試對有多個角色執行個體正在執行的部署啟動遠端偵錯連線,您目前尚無法控制偵錯工具會先連接到哪一個執行個體,因為 Azure 負載平衡器將會隨機選取執行個體。但在連接該執行個體後,您將會繼續偵錯同一個執行個體。另請注意,如果未活動時間持續超過 4 分鐘 (例如,當您在中斷點上停止太久時),Azure 可能會關閉連線。

當您的部署在雲端中執行時,您很有可能會在多個計算或角色執行個體中加以執行。這可讓您利用 Azure 99.95% 的可用性保證,並向外擴充您的應用程式。

在這種情況下,您可能需要在特定角色執行個體中從遠端偵錯您的 Java 應用程式。不過,如果您只啟用了一般輸入端點進行偵錯,Azure 負載平衡器會讓您幾乎不可能將偵錯工具連接到特定角色執行個體。它會讓您連接到它隨機挑選的角色執行個體。

在此類案例中,利用執行個體輸入端點可讓您更輕鬆地偵錯特定角色執行個體。

假設您計劃在部署中執行 5 個角色執行個體。使用 [角色屬性] 對話方塊中的 [端點] 屬性頁面,建立執行個體輸入端點,並為其指派公用連接埠的範圍,而不是單一連接埠號碼。例如,在 [公用連接埠] 輸入方塊中,指定 81-85

以此執行個體端點部署您的應用程式之後,Azure 會將此範圍內的唯一連接埠號碼指派給每個角色執行個體。然後,為了確認哪個連接埠號碼指派給哪個執行個體,您可以使用工具組在您的部署中自動設定的 InstanceEndpointName_PUBLICPORT 環境變數 (其中,InstanceEndpointName 是您在建立執行個體端點時所指派的名稱);例如,藉由在網頁的頁尾中傳回其值,讓您在瀏覽時可加以讀取。

在您得知指派給執行個體的公用連接埠號碼之後,您可以將其加到服務的主機名稱中,在 Eclipse 的偵錯組態中加以參考。這會讓 Eclipse 偵錯工具連接到該執行個體,而不是任何其他執行個體。

  • 偵錯之後,您可以按一下 Eclipse 的功能表,再依序按一下 [視窗]、[開啟檢視方塊],然後選取您要使用的檢視方塊,將檢視方塊從 [偵錯] 切換至 [Java]。

  • 若要在 GlassFish 中啟用遠端偵錯,請不要使用 Azure Toolkit for Eclipse 的遠端偵錯組態功能。請手動設定 GlassFish。有鑑於 GlassFish 對於環境變數中預先定義之 Java 選項的處理方式,此工具組的遠端偵錯組態功能對 GlassFish 無法正常運作。如果已啟用工具組的遠端偵錯組態功能,GlassFish 可能會因而無法啟動。

顯示:
© 2015 Microsoft