若要在設計時間偵錯程式碼,而不是在應用程式執行時,您可以使用 立即視窗。
若要從 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 函式上設定斷點。
選擇偵錯>>,以開啟立即視窗。 在視窗中輸入
?MyFunction
,然後按 Enter。已達到斷點,在 [Locals] 視窗中的 MyFunction 值為 1。 您可以在應用程式處於中斷模式時檢查呼叫堆疊和其他偵錯視窗。
選取 Visual Studio 工具列上的 [繼續 ]。 應用程式結束後,會在 [即時] 視窗中傳回 1。 請確定您仍處於設計模式。
再次在 [
?MyFunction
視窗] 中輸入 ,然後按 Enter。 觸發斷點,且 Locals 視窗中的 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 程式代碼類型,例如 Managed (CoreCLR) 。 如果您的自定義控件已以C++撰寫,請選擇 [原生]。
按兩下 [ 附加 ] 按鈕以附加Visual Studio的第二個實例。
在第二個 Visual Studio 實例中,開啟與您要偵錯之自定義控件相關聯的程式碼檔案。 請務必只開啟檔案,而不是整個方案或專案。
將必要的中斷點設定在先前開啟的檔案中。
在第一個 Visual Studio 實例中,關閉包含您要偵錯之自定義控件的 XAML 頁面(您在先前步驟中開啟的相同頁面)。
在第一個 Visual Studio 實例中,開啟您在上一個步驟中關閉的 XAML 頁面。 這會讓偵錯工具在您於 Visual Studio 第二個執行個體所設的第一個斷點處停止。
偵錯 Visual Studio 第二個實例中的程序代碼。