Visual Studio 調試系列9 調試器提示和技巧


01 固定數據提示

如果你在調試時,經常將鼠標懸停在數據提示上,就可能想固定變量的數據提示,方便自己隨時查看。 即使在重新啟動后,固定的變量也能保持不動。 要固定數據提示,請在鼠標懸停其上時單擊固定圖標。 你可以固定多個變量。

02 編輯代碼並繼續調試 (C#,VB, C++)

在 Visual Studio 支持的大多數語言中,你都可以在調試會話的過程中編輯代碼,然后繼續調試。 要使用此功能,請先在調試器中暫停,用鼠標點擊進入代碼,進行編輯,然后按 F5、F10 或 F11 鍵繼續調試。

編輯並繼續調試

有關功能使用和功能限制的詳細信息,請參閱編輯並繼續

03 調試難以再現的問題

如果在應用中重新實現特定狀態很困難或很費時,可以考慮使用條件斷點。 你可以使用條件斷點並對其加以篩選,以免破壞應用代碼,直到應用進入所需的狀態(例如,變量正在存儲錯誤數據的狀態)。 你可以使用表達式、篩選器、命中次數等來設置條件。

創建條件斷點

  1. 右鍵單擊斷點圖標 (紅色的球),然后選擇條件。

  2. 在斷點設置窗口中,鍵入一個表達式。

    條件斷點

  3. 如果你對另一種類型的條件感興趣,請在斷點設置對話框中選擇篩選器,而不是條件表達式,然后按照篩選器的提示操作。

04 配置要在調試器中顯示的數據

有關C#,Visual Basic 和C++(C++僅 /CLI 代碼),可以讓調試程序要使用下列選項顯示的信息DebuggerDisplay屬性。 有關C++代碼中,可以執行相同的 using Natvis 可視化

05 更改執行流

讓調試器暫停在某行代碼上,用鼠標抓住左側的黃色箭頭指針。 將黃色箭頭指針移動到代碼執行路徑中的其他點上。 然后通過 F5 鍵或步驟命令繼續運行應用。

移動執行指針

通過更改執行流,你可以進行測試不同代碼執行路徑或重新運行代碼等操作,而無需重啟調試器。

06 跟蹤范圍外的對象 (C#、 Visual Basic)

通過調試器窗口(如監視窗口)可以輕松查看變量。 但是,如果變量超出了監視窗口的范圍,你可能會注意到它變成了灰色。在某些應用場景中,如果變量超出范圍,變量的值甚至可能會發生變化,因此你可能需要密切關注它(例如,變量可能會被當做垃圾回收掉)。你可以在監視窗口中為該變量創建一個對象 ID 來跟蹤這個變量。

創建對象 ID

  1. 在要跟蹤的變量附近設置一個斷點。

  2. 啟動調試器 (F5),並在斷點處停止。

  3. 在局部變量窗口(調試 > 窗口 > 局部變量)中找到該變量,右鍵單擊該變量,然后選擇創建對象 ID。

    創建對象 ID

  4. 應該會在“局部變量” $ 窗口中看到 $ 窗口中設置斷點來中斷調用函數返回到的指令或行處的執行。 此變量是對象 id。

  5. 右鍵單擊對象 ID 變量,然后選擇添加監視。

有關詳細信息,請參閱創建的對象 ID

07 查看函數的返回值

要查看函數的返回值,請在逐步執行代碼時,查看自動窗口中顯示的函數。 要查看函數的返回值,請確保你關注的函數已執行完畢(如果函數的調用目前處於停止狀態,請按一下 F10 鍵)。 如果該窗口已關閉,請通過調試 > 窗口 > 自動窗口打開自動窗口。

自動窗口

此外,還可以在即時窗口中輸入函數來查看返回值。 (通過調試 > 窗口 > 即時打開該窗口。)

即時窗口

此外,還可以在監視和即時窗口中使用偽變量,如 $ReturnValue

08 檢查可視化工具中的字符串

在使用字符串時,如果能看到完整的、帶格式的字符串會很有幫助。 要查看純文本、XML、HTML 或 JSON 字符串,請將鼠標懸停在包含字符串值的變量上,然后單擊放大鏡圖標VisualizerIcon

打開字符串可視化工具

字符串可視化工具可以幫你確定字符串的格式是否正確,具體取決於字符串的類型。 例如,如果值字段為空,表明可視化工具類型未識別出該字符串。 有關詳細信息,請參閱字符串可視化工具對話框

JSON 字符串可視化工具

對於幾個其他類型如調試器窗口中顯示的數據集和 DataTable 對象,還可以打開內置的可視化工具。

09 在已處理的異常處中斷代碼

調試器會在未經處理的異常處中斷代碼。 但是,已處理的異常(例如 try/catch 塊內發生的異常)也可能會造成錯誤,可能需要進一步調查。 可以將調試器配置為在已處理的異常處中斷代碼,方法是配置異常設置對話框中的選項。 要打開這個對話框,請選擇調試 > 窗口 > 異常設置。

通過異常設置對話框,你可以讓調試器在特定異常處中斷代碼。 在下圖中,調試器會在發生 System.NullReferenceException 時中斷代碼。 有關詳細信息,請參閱管理異常

10 調試死鎖和爭用條件

如果需要調試的問題對於多線程應用程序很常見,在調試時查看線程的位置,通常會有所幫助。 可使用源中顯示線程按鈕輕松完成此操作。

在源代碼中顯示線程

  1. 調試時,單擊源中顯示線程按鈕在源中顯示線程中調試工具欄。

  2. 查看窗口左側的滾動條。 在這一行,你可以看到線程標記圖標線程標記 ,類似於兩根細線。線程標記指示線程在此位置停止。

    注意,線程標記可能被斷點不完全遮擋。

  3. 將指針懸停在線程標記上。 屏幕上將顯示數據提示。 數據提示將告訴你每個已停止線程的名稱和線程 ID。

    你還可以查看中的線程的位置並行堆棧窗口

11 檢查 web 服務和網絡資源 (UWP) 的有效負載

在 UWP 應用中,你可以分析使用 Windows.Web.Http API執行的網絡操作。 可以使用此工具來幫助調試 web 服務和網絡資源。 若要使用該工具,請選擇調試 > 性能探查器。 選擇網絡,然后選擇啟動。 在應用中,瀏覽使用 Windows.Web.Http 的應用場景,然后選擇 停止收集 生成報表。

網絡使用情況分析工具

在摘要視圖中選擇一個操作,查看更多詳細信息。

網絡使用情況工具中的詳細信息

有關詳細信息,請參閱網絡使用情況

12 將調試器附加到您的應用程序

若要附加到正在運行的應用,調試器將加載為想要調試的應用的相同內部版本生成的符號 (.pdb) 文件。 在某些情況下,了解符號文件的一些知識非常有用。 你可在模塊窗口中檢查 Visual Studio 如何加載符號文件。

在調試時,通過選擇調試 > 窗口 > 模塊 打開模塊窗口。 模塊窗口可以告訴你,調試器將哪些模塊視為用戶代碼或我的代碼,以及符號加載模塊的狀態。 在大多數情況下,調試器會自動為用戶代碼查找符號文件,但如果你想要單步跟蹤 (或調試).NET framework 代碼、系統代碼或第三方庫代碼,必須執行其他步驟獲取正確的符號文件。

在模塊窗口中查看符號信息

你可以直接在模塊窗口中右鍵單擊並選擇加載符號來加載符號信息。

有時,應用開發人員發布的應用不包含匹配的符號文件 (為了減少占用的空間),但會為內部版本保留一份匹配的符號文件,用於以后調試發布版本。

了解如何調試器如何區分用戶代碼,請參閱僅我的代碼。 若要了解有關符號文件的詳細信息,請參閱在 Visual Studio 調試器中指定符號 (.pdb) 和源文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM