首頁  >  文章  >  後端開發  >  Visual Studio偵錯技巧總表

Visual Studio偵錯技巧總表

高洛峰
高洛峰原創
2017-02-07 11:13:461341瀏覽

調試是軟體開發週期中很重要的一部分。它具有挑戰性,同時也很讓人感到疑惑和煩惱。總的來說,對於稍大一點的程序,調試是不可避免的。最近幾年,調試工具的發展讓許多調試任務變的越來越簡單和省時。

1 懸停滑鼠查看表達式值

Visual Studio调试技巧汇总

  調試是很有挑戰性的。例如在函數內逐步運行可以看出哪裡出錯,查看堆疊資訊可以知道函數被誰呼叫等等。

  但是無論哪種情況下,查看表達式和局部變數的值都是很麻煩的(把表達式和局部變數放到watch視窗裡)。

  一種更簡單的方法,把滑鼠停在所需查看的資料上。如果是類別或結構,那麼點擊展開可以很方便快速地查看其欄位。

2 在運行過程中改變變數值

Visual Studio调试技巧汇总

  調試器不僅僅是分析程式崩潰和詭異行為的工具,還可以透過逐步調試檢查資料和行為是否符合程式預期的方法解決許多bug。有時,你會想是否設定某些條件為真,程式就能正確運作了。其實你只要把滑鼠移到變數上,雙擊數值,然後輸入你需要的值。這樣就不需要修改程式碼,重啟程式了。

3 設定下一個運行位置

Visual Studio调试技巧汇总

  一個典型的調試案例是我們經常會用逐步調試的方法去分析為什麼函數出錯了。這時你遇到這個函數呼叫其他函數回傳錯誤,而這個錯誤不是你想要的,你該怎麼辦?重啟調試器?這裡有個更好的方法,直接把黃色的運行位置箭頭拖曳到你想要的運行位置。其實就是跳過中間運行程式碼,直接到想要的位置。很簡單吧。

4 編輯然後繼續運行

Visual Studio调试技巧汇总

  在運行一個很複雜的程式和插件時,發現一個錯誤,但是不想浪費時間去重編譯重啟動程序。

  很簡單,只要在這個位置修改這個bug,然後繼續調試。 Visual studio會修改這個程序,讓你可以繼續偵錯而不需要重新啟動程式。

  值得注意的是「編輯然後繼續運行」這個功能有幾個限制。一,它不能在64位代碼上使用。如果想使用這個功能,到專案設定裡的編譯選項,選擇”x86”作為目標平台。別擔心,這目標平台在reslease配置是和」debug是分離的,也就是說依然是」Any  CPU」的設定。二,「編輯然後繼續運行」這個功能僅適用於一個函數內部改變。如果你想要改變這個函數的宣告或增加新的方法,你只能選擇重啟程序,或不做任何改變繼續。會導致編譯器停止運作。變數。 $handles去追蹤打開的句柄數量,$err去查看函數的錯誤代碼(然後使用Tools->Error 查看錯誤代碼的描述)或者輸入@eax(在64位下是@rax )查看包含函數返回值的寄存器值。任意位置設定斷點。

Visual Studio调试技巧汇总

  調試多執行緒程式碼是很痛苦的。或許也是有趣的。這取決於你的調試器。 Visual studio 一個很讚的功能就是在執行緒視窗查看執行緒的堆疊資訊。你能很方便的直接看到所有線程以及他們的堆疊資訊。

  8 條件斷點

Visual Studio调试技巧汇总

  如果你想重現一個小機率事件,但是斷點在大量不需要的條件下也會觸發。你可以很簡單的設定條件斷點。在斷點視窗設定該斷點條件,Visual studio 會自動忽略不符合條件的斷點。

  9 記憶體視窗

Visual Studio调试技巧汇总

  一些bug是由錯誤的結構定義、缺少對齊屬性等原因引起的。查看每行記憶體的內容很容易定位和解決這些bug. Visual studio 的記憶體視窗可以把資料翻譯成8/16/32/64-bit數字或浮點數。你可以在編輯視窗直接改變數值。

  10 跳到定義

Visual Studio调试技巧汇总

  如果你在解決別人寫的程式碼一個bug,會遇到「這個類型是什麼」「這個函數做什麼的」之類的問題,你可以使用visual bug,會遇到「這個類型是什麼」「這個函數做什麼的」之類的問題,你可以使用visual studio跳到定義的命令來查看類型或函數的定義。

  11 命令視窗

Visual Studio调试技巧汇总

  這個小技巧是由chaau建議的,它能節省你大量的時間。 Visual studio支援一個命令窗口,你可以透過選單View->Other Windows->Command Window 打開。你可以在視窗裡輸入不同命令來使調試自動化。例如,可以透過很簡單的指令去的測試MFC的COleDateTime變數。

以上就是為大家分享的11個Visual Studio調試技巧,希望對大家的學習有所幫助。

更多Visual Studio調試技巧總結相關文章請關注PHP中文網!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn