在 Visual Studio 的設計階段進行偵錯 (C#、C++/CLI、Visual Basic、F#)

若要在設計階段而不是在應用程式執行時偵錯程式碼,您可使用 [即時運算] 視窗。

若要從 XAML 設計工具對應用程式背後的 XAML 程式碼進行偵錯,例如宣告式資料繫結案例,您可使用 [偵錯]>[連結至處理序]

使用 [即時運算] 視窗

您可使用 Visual Studio 的 [即時運算] 視窗來執行函式或副程式,而不需執行應用程式。 如果函式或副程式含有中斷點,Visual Studio 會在中斷點中斷。 然後,您就可以使用偵錯工具視窗來檢查程式狀態。 這項功能稱為「在設計階段偵錯」

下列範例採用 Visual Basic。 您也可以在 C#、F# 和 C++/CLI 應用程式的設計階段使用 [即時運算] 視窗。 針對 C++/CLI,不使用 /clr 選項進行編譯,以使用 [即時運算] 視窗。

  1. 將下列程式碼貼到空白 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
    
  2. End Function 行上設定中斷點。

  3. 選取 [偵錯]>[Windows]>[即時運算],以開啟 [即時運算] 視窗。 在視窗中鍵入 ?MyFunction,然後按 Enter 鍵。

    遇到中斷點,而且 [區域變數] 視窗中 MyFunction 的值為 1。 您可以在應用程式處於中斷模式時檢查呼叫堆疊和其他偵錯視窗。

  4. 在 Visual Studio 工具列上選取 [繼續]。 應用程式結束,而且 [即時運算] 視窗中傳回了 1。 請確定您仍處於設計模式。

  5. 在 [即時運算] 視窗中再次鍵入 ?MyFunction,然後按 Enter 鍵。 遇到中斷點,而且 [區域變數] 視窗中 MyFunction 的值為 2

  6. 若未選取 [繼續],請在 [即時運算] 視窗中鍵入 ?MySub(),然後按 Enter 鍵。 遇到中斷點,而且 [區域變數] 視窗中 MyFunction 的值為 3。 您可以在應用程式處於中斷模式時檢查應用程式狀態。

  7. 選取 [繼續]。 再次遇到中斷點,而且 [區域變數] 視窗中 MyFunction 的值現在為 2。 [即時運算] 視窗會傳回「運算式已經評估且沒有值」

  8. 選取 [繼續]。 應用程式結束,而且 [即時運算] 視窗中傳回了 2。 請確定您仍處於設計模式。

  9. 若要清除 [即時運算] 視窗的內容,請在視窗中按一下滑鼠右鍵,然後選取 [全部清除]

連結至 XAML 設計工具以在設計階段對自訂 XAML 控制項進行偵錯

  1. 在 Visual Studio 中開啟您的解決方案或專案。

  2. 建置解決方案/專案。

  3. 開啟包含您要偵錯之自訂控制項的 XAML 頁面。

    針對以 Windows 組建 16299 或更新版本為目標的 UWP 專案,此步驟將會啟動 UwpSurface.exe 程序。 針對以 Windows 組建 16299 或更新版本為目標的 WPF 專案,此步驟將會啟動 WpfSurface.exe 程序。 針對 Windows 組建 16299 之前的 WPF 或 UWP 版本,此步驟將會啟動 XDesProc.exe 程序。

  4. 開啟 Visual Studio 的第二個執行個體。 請勿在第二個執行個體中開啟解決方案或專案。

  5. 在第二個 Visual Studio 執行個體中,開啟 [偵錯] 功能表並選擇 [連結至處理序...]

  6. 根據您的專案類型 (請參閱上述步驟),從可用的程序清單中選取 UwpSurface.exe、WpfSurface.exe 或 XDesProc.exe 程序。

  7. 在 [連結至處理序] 對話方塊的 [連結至] 欄位中,針對您要偵錯的自訂控制項選擇正確的程式碼類型。

    如果您的自訂控制項是以 .NET 語言撰寫,請選擇適當的 .NET 程式碼類型,例如 [受控 (CoreCLR)]。 如果您的自訂控制項是以 C++ 撰寫,請選擇 [原生]

  8. 按一下 [連結] 按鈕,以連結 Visual Studio 的第二個執行個體。

  9. 在 Visual Studio 的第二個執行個體中,開啟與您要偵錯之自訂控制項相關聯的程式碼檔案。 務必只開啟檔案,而不是整個解決方案或專案。

  10. 將必要的中斷點放在先前開啟的檔案中。

  11. 在 Visual Studio 的第一個執行個體中,關閉包含您要偵錯之自訂控制項的 XAML 頁面 (您在先前步驟中開啟的相同頁面)。

  12. 在 Visual Studio 的第一個執行個體中,開啟您在上一個步驟中關閉的 XAML 頁面。 這會導致偵錯工具停止於您在 Visual Studio 的第二個執行個體中設定的第一個中斷點。

  13. 在 Visual Studio 的第二個執行個體中進行程式碼偵錯。