使用 Visual Studio for Mac 進行偵錯

重要

根據 Microsoft 的新式生命週期原則,Visual Studio for Mac 計畫於 2024 年 8 月 31 日停用。 雖然您可以繼續使用 Visual Studio for Mac,但 Mac 上的開發人員還有幾個其他選項,例如用於 VS Code 的新 C # 開發套件延伸模組之預覽版本。

了解有關支援時間表和替代方案的詳細資訊

Visual Studio for Mac 具有支援 .NET Core、.NET Framework、Unity 和 Xamarin 應用程式的偵錯工具。

Visual Studio for Mac 使用 Mono Soft Debugger,它實作到 Mono 執行階段之中,讓 Visual Studio for Mac 能跨所有平台進行 Managed 程式碼的偵錯。

偵錯工具

Visual Studio for Mac 使用 Mono Soft Debugger 針對所有 Xamarin 應用程式進行 Managed (C# 或 F#) 程式碼的偵錯。 Mono Soft Debugger 不同於一般偵錯工具,它是內建於 Mono 執行階段的合作型偵錯工具。產生的程式碼和 Mono 執行階段會與 IDE 合作,提供偵錯體驗。 Mono 執行階段會透過網路通訊協定公開偵錯功能,您可以在 Mono 文件中深入了解。

硬式偵錯工具,例如 LLDBGDB,可控制程式,而不需要偵錯程式的知識或合作。 如果您需要偵錯原生 iOS 或 Android 程式碼,在偵錯 Xamarin 應用程式時仍然很有用。

針對 .NET Core 和 ASP.NET Core 應用程式,Visual Studio for Mac 會使用 .NET Core 偵錯工具。 這個偵錯工具也是合作偵錯工具,可與 .NET 執行階段搭配使用。

使用偵錯工具

若要開始進行任何應用程式的偵錯,請務必確定組態已設為 [偵錯]。 偵錯組態會提供有用的一組工具來支援偵錯,例如中斷點、使用資料的視覺化檢視,以及檢視呼叫堆疊:

Debug configuration

設定中斷點

若要在您的 IDE 中設定中斷點,請在編輯器按一下您要中斷之程式碼行號旁邊的邊界區域:

Setting breakpoint in margin

您可以移至 [中斷點] 視窗來檢視程式碼中已設定的所有中斷點:

List of breakpoints

開始偵錯

若要開始偵錯,請選取目標瀏覽器、裝置或模擬器/模擬器:

Debug configurationSelect target device

然後按 [播放] 按鈕,或 Cmd + return 部署您的應用程式。 當您到達中斷點時,程式碼反白顯示為黃色:

Highlight showing breakpoint has been hit

偵錯工具,例如用來檢查物件值的工具,可在此時用來取得程式碼中發生情況的詳細資訊:

Debug visualizations

條件式中斷點

您也可以設定規則,以聽寫中斷點發生的情況。 這稱為新增條件中斷點。 若要設定條件中斷點,請存取 [中斷點屬性] 視窗,這可以透過兩種方式進行:

  • 若要新增條件中斷點,請在您想要設定中斷點的程式碼行號左邊,以滑鼠右鍵按一下編輯器邊界,然後選取 [新增中斷點]:

Breakpoint context menu

  • 若要新增現有中斷點的條件,請以滑鼠右鍵按一下中斷點,然後選取 [中斷點屬性],或在 [中斷點] 視窗中選取 [編輯中斷點] 按鈕,如下所示:

Edit existing Breakpoint in Breakpoints Window

然後,您可以輸入想要中斷點發生的條件:

Edit Breakpoint conditions

逐步執行程式碼

當已到達中斷點時,偵錯工具可讓您控制程式的執行。 Visual Studio for Mac 會顯示四個按鈕,可讓您執行與逐步執行程式碼。 在 Visual Studio for Mac 中,它們看起來會像這樣:

Buttons to step through code

下面是四個按鈕:

  • 播放 - 這會開始執行程式碼,直到下一個中斷點。
  • 不進入函式 - 這會執行下一行程式碼。 如果下一行是函式呼叫,不進入函式會執行該函式,並在函式「之後」的下一行程式碼停止。
  • 逐步執行 - 這也會執行下一行程式碼。 如果下一行是函式呼叫,逐步執行會停止在函式的第一行,讓您繼續一行一行地進行函式的偵錯。 如果下一行不是函式,它的行為與「不進入函式」相同。
  • 跳離函式 - 這會回到呼叫目前函式的行。

變更下一步執行的陳述式

當偵錯工具暫停時,邊界上的箭號會指出接下來所要執行的程式碼行。 您可以選取該箭號,將其拖曳至不同的程式碼行來變更所要執行的陳述式。 您也可以在程式碼行上按一下滑鼠右鍵,然後從內容功能表中選取 [設定下一個陳述式] 來達到相同的目的。

Drag and drop arrow to set next statement

警告

變更目前的執行行可能會導致應用程式中發生非預期的行為。 也有一些條件,無法變更下一個陳述式來執行。 例如,將箭號從某個方法拖曳到另一個方法將無法運作。 在這些不支援的情況下,Visual Studio for Mac 會顯示對話方塊,讓您知道無法變更目前的執行行。

Mono 類別庫偵錯

Xamarin 產品隨附 Mono 類別庫的原始程式碼,您可以使用它從偵錯工具逐步檢查一切背後運作的情況。

因為這項功能會在偵錯期間消耗較多的記憶體,所以它預設會關閉。

若要啟用此功能,請瀏覽至 Visual Studio for Mac > 喜好 > 偵錯工具,並確定已選取[逐步執行外部程式碼] 選項,如下所示:

Step into external code option

另請參閱