使用 Visual Studio 偵錯 Service Fabric 應用程式

偵錯本機 Service Fabric 應用程式

重要

VS 2022 不支援遠端偵錯

您可以在本機電腦開發叢集中開發和偵錯 Azure Service Fabric 應用程式來節省時間和金錢。 Visual Studio 2019 或 2015 可以將應用程式部署至本機叢集,並自動將偵錯工具連接至您應用程式的所有執行個體。 Visual Studio 必須以系統管理員身分執行,才能連接偵錯工具。

  1. 遵循 設定 Service Fabric 開發環境中的步驟來啟動本機開發叢集。

  2. F5 或按一下 [偵錯]> [開始偵錯]

    Screenshot that shows the Debug menu.

  3. 透過按一下 [偵錯] 功能表中的命令,在您的程式碼中設定中斷點並逐步執行應用程式。

    注意

    Visual Studio 將附加至您應用程式的所有執行個體。 當您逐步執行程式碼時,系統可能會透過多個程序叫用中斷點而導致並行工作階段。 若要嘗試在叫用中斷點之後停用它們,請在執行緒識別碼上條件化每個中斷點,或使用診斷事件。

  4. [診斷事件] 視窗會自動開啟,讓您可以即時檢視診斷事件。

    View diagnostic events in real time

  5. 您也可以在 [雲端總管] 開啟 [診斷事件] 視窗。 在 [Service Fabric] 之下,以滑鼠右鍵按一下任何節點,然後選擇 [檢視串流追蹤]

    Open the diagnostic events window

    如果您想要將追蹤篩選為特定的服務或應用程式,請為該特定服務或應用程式啟用資料串流追蹤。

  6. 您可以在自動產生的 ServiceEventSource.cs 檔案中查看診斷事件,並從應用程式程式碼進行呼叫。

    ServiceEventSource.Current.ServiceMessage(this, "My ServiceMessage with a parameter {0}", result.Value.ToString());
    
  7. [診斷事件] 視窗支援篩選、暫停和即時檢查事件。 篩選是事件訊息的簡易字串搜尋,包括其內容。

    Filter, pause and resume, or inspect events in real time

  8. 偵錯服務如同偵錯任何其他應用程式。 您通常可以透過 Visual Studio 設定中斷點,以便輕鬆進行偵錯。 即使可靠集合會在多個節點上複寫,它們仍會實作 IEnumerable。 此實作表示您可以在 Visual Studio 中偵錯時使用 [結果檢視],以查看已在內部儲存的內容。 若要這麼做,請在程式碼中的任何位置設定中斷點。

    Start debugging an application

偵錯時執行指令碼

在某些情況下,您可能需要在啟動偵錯工作階段時執行指令碼 (例如,未使用預設服務時)。

在 Visual Studio 中,您可以在 Service Fabric 應用程式專案 (.sfproj) 的 Scripts 資料夾中新增名為 Start-Service.ps1 的檔案。 在本機叢集中建立應用程式之後,將會叫用此指令碼。

偵錯遠端 Service Fabric 應用程式

如果您的 Service Fabric 應用程式是在 Azure 中的 Service Fabric 叢集上執行,則可直接從 Visual Studio 對這些應用程式進行遠端偵錯。

注意

此功能需要 Service Fabric SDK 2.0Azure SDK for.NET 2.9

警告

遠端偵錯適用於開發/測試案例,而非用於生產環境中,因為會對執行中的應用程式造成影響。

  1. Cloud Explorer 中瀏覽至您的叢集。 以滑鼠右鍵按一下並選擇 [啟用偵錯]

    Enable remote debugging

    此動作會開始在您的叢集節點上啟用遠端偵錯擴充功能的程序,以及所需的網路設定。

  2. 在 [雲端總管] 中的叢集節點上按一下滑鼠右鍵,然後選擇 [附加偵錯工具]

    Attach debugger

  3. 在 [附加至程序] 對話方塊中,選擇您要偵錯的處理序,然後按一下 [附加]

    Choose process

    您想要附加至的處理序名稱等於您的服務專案組件名稱。

    偵錯工具將會複製至執行處理序的所有節點。

    • 在偵錯無狀態服務的情況下,所有節點上此服務的所有執行個體都是偵錯工作階段的一部分。

    • 如果您正在偵錯具狀態服務,任何分割區都只有主要複本會是作用中,因而遭到偵錯工具攔截。 如果在偵錯工作階段期間移動主要複本,仍會在偵錯工作階段內處理該複本。

    • 若只要攔截特定服務的相關分割區或執行個體,您可以使用條件式中斷點只中斷特定的分割區或執行個體。

      Conditional breakpoint

      注意

      我們目前不支援對多個執行個體具有相同服務可執行檔名稱的 Service Fabric 叢集進行。

  4. 一旦完成應用程式的偵錯,在 [雲端總管] 中以滑鼠右鍵按一下叢集,然後選擇 [停用偵錯],即可停用遠端偵錯延伸模組

    Disable remote debugging

從遠端叢集節點串流追蹤

您也可以直接從遠端叢集節點將追蹤串流至 Visual Studio。 這項功能可讓您串流在 Service Fabric 叢集節點上產生的 ETW 追蹤事件。

注意

此功能需要 Service Fabric SDK 2.0Azure SDK for.NET 2.9。 這項功能僅支援在 Azure 中執行的叢集。

警告

串流追蹤適用於開發/測試案例,而非用於生產環境中,因為會對執行中的應用程式造成影響。 在生產案例中,您應依賴使用 Azure 診斷轉送事件。

  1. Cloud Explorer 中瀏覽至您的叢集。 以滑鼠右鍵按一下並選擇 [啟用串流追蹤]

    Enable remote streaming traces

    此動作會開始在您的叢集節點上啟用串流追蹤擴充功能的程序,以及所需的網路設定。

  2. 展開 [雲端總管] 中的 [節點] 元素,以滑鼠右鍵按一下您要串流追蹤的節點,然後選擇 [檢視串流追蹤]

    View remote streaming traces

    對您想要查看其追蹤的任意數目的節點,重複執行步驟 2。 每個節點串流會顯示在專用視窗中。

    您現在可以查看 Service Fabric 所發出的追蹤,以及您的服務。 如果您想要篩選事件,只顯示特定的應用程式,只要在篩選器中輸入應用程式的名稱即可。

    Viewing streaming traces

  3. 完成從您的叢集串流追蹤後,在 [雲端總管] 中以滑鼠右鍵按一下此叢集,選擇 [停用串流追蹤],即可停用遠端串流追蹤

    Disable remote streaming traces

下一步