在 Visual Studio 的設計階段進行偵錯 (C#、C++/CLI、Visual Basic、F#)
若要在設計階段而不是在應用程式執行時偵錯程式碼,您可使用 [即時運算] 視窗。
若要從 XAML 設計工具對應用程式背後的 XAML 程式碼進行偵錯,例如宣告式資料繫結案例,您可使用 [偵錯]>[連結至處理序]。
使用 [即時運算] 視窗
您可使用 Visual Studio 的 [即時運算] 視窗來執行函式或副程式,而不需執行應用程式。 如果函式或副程式含有中斷點,Visual Studio 會在中斷點中斷。 然後,您就可以使用偵錯工具視窗來檢查程式狀態。 這項功能稱為「在設計階段偵錯」。
下列範例採用 Visual Basic。 您也可以在 C#、F# 和 C++/CLI 應用程式的設計階段使用 [即時運算] 視窗。 針對 C++/CLI,不使用 /clr 選項進行編譯,以使用 [即時運算] 視窗。
將下列程式碼貼到空白 Visual Basic 主控台應用程式中:
Module Module1 Sub Main() MySub() End Sub Function MyFunction() As Decimal Static i As Integer i = i + 1 Return i End Function Sub MySub() MyFunction() End Sub End Module
在 End Function 行上設定中斷點。
選取 [偵錯]>[Windows]>[即時運算],以開啟 [即時運算] 視窗。 在視窗中鍵入
?MyFunction
,然後按 Enter 鍵。遇到中斷點,而且 [區域變數] 視窗中 MyFunction 的值為 1。 您可以在應用程式處於中斷模式時檢查呼叫堆疊和其他偵錯視窗。
在 Visual Studio 工具列上選取 [繼續]。 應用程式結束,而且 [即時運算] 視窗中傳回了 1。 請確定您仍處於設計模式。
在 [即時運算] 視窗中再次鍵入
?MyFunction
,然後按 Enter 鍵。 遇到中斷點,而且 [區域變數] 視窗中 MyFunction 的值為 2。若未選取 [繼續],請在 [即時運算] 視窗中鍵入
?MySub()
,然後按 Enter 鍵。 遇到中斷點,而且 [區域變數] 視窗中 MyFunction 的值為 3。 您可以在應用程式處於中斷模式時檢查應用程式狀態。選取 [繼續]。 再次遇到中斷點,而且 [區域變數] 視窗中 MyFunction 的值現在為 2。 [即時運算] 視窗會傳回「運算式已經評估且沒有值」。
選取 [繼續]。 應用程式結束,而且 [即時運算] 視窗中傳回了 2。 請確定您仍處於設計模式。
若要清除 [即時運算] 視窗的內容,請在視窗中按一下滑鼠右鍵,然後選取 [全部清除]。
連結至 XAML 設計工具以在設計階段對自訂 XAML 控制項進行偵錯
在 Visual Studio 中開啟您的解決方案或專案。
建置解決方案/專案。
開啟包含您要偵錯之自訂控制項的 XAML 頁面。
針對以 Windows 組建 16299 或更新版本為目標的 UWP 專案,此步驟將會啟動 UwpSurface.exe 程序。 針對以 Windows 組建 16299 或更新版本為目標的 WPF 專案,此步驟將會啟動 WpfSurface.exe 程序。 針對 Windows 組建 16299 之前的 WPF 或 UWP 版本,此步驟將會啟動 XDesProc.exe 程序。
開啟 Visual Studio 的第二個執行個體。 請勿在第二個執行個體中開啟解決方案或專案。
在第二個 Visual Studio 執行個體中,開啟 [偵錯] 功能表並選擇 [連結至處理序...]。
根據您的專案類型 (請參閱上述步驟),從可用的程序清單中選取 UwpSurface.exe、WpfSurface.exe 或 XDesProc.exe 程序。
在 [連結至處理序] 對話方塊的 [連結至] 欄位中,針對您要偵錯的自訂控制項選擇正確的程式碼類型。
如果您的自訂控制項是以 .NET 語言撰寫,請選擇適當的 .NET 程式碼類型,例如 [受控 (CoreCLR)]。 如果您的自訂控制項是以 C++ 撰寫,請選擇 [原生]。
按一下 [連結] 按鈕,以連結 Visual Studio 的第二個執行個體。
在 Visual Studio 的第二個執行個體中,開啟與您要偵錯之自訂控制項相關聯的程式碼檔案。 務必只開啟檔案,而不是整個解決方案或專案。
將必要的中斷點放在先前開啟的檔案中。
在 Visual Studio 的第一個執行個體中,關閉包含您要偵錯之自訂控制項的 XAML 頁面 (您在先前步驟中開啟的相同頁面)。
在 Visual Studio 的第一個執行個體中,開啟您在上一個步驟中關閉的 XAML 頁面。 這會導致偵錯工具停止於您在 Visual Studio 的第二個執行個體中設定的第一個中斷點。
在 Visual Studio 的第二個執行個體中進行程式碼偵錯。