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

01 固定數據提示

若是你在調試時,常常將鼠標懸停在數據提示上,就可能想固定變量的數據提示,方便本身隨時查看。 即便在從新啓動後,固定的變量也能保持不動。 要固定數據提示,請在鼠標懸停其上時單擊固定圖標。 你能夠固定多個變量。html

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

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

編輯並繼續調試

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

03 調試難以再現的問題

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

建立條件斷點

  1. 右鍵單擊斷點圖標 (紅色的球),而後選擇條件。網絡

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

    條件斷點

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

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

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

05 更改執行流

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

移動執行指針

經過更改執行流,你能夠進行測試不一樣代碼執行路徑或從新運行代碼等操做,而無需重啓調試器。visual-studio

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) 和源文件

 
相關文章
相關標籤/搜索