Visual Studio 那些隱藏的除錯功能

發表於2013-08-01

Visual Studio 是一個強大的除錯工具,裡面很多隱藏功能少有人問津,但是在特定場景可以節省你很多時間,本文主要介紹一些Visual Studio除錯相關的隱藏功能,歡迎大家補充。

 

執行到游標(Run to cursor)

大多數人用Visual Studio在除錯程式的時候先在程式開始的時候設定一個斷點,然後依次F10/F11到自己想要檢視的邏輯。如果這個過程我們需要仔細檢視每一步的變數或者執行路徑,這樣做無可厚非,但是如果我們不想關心前面執行的邏輯,我們可以使用Run to cursor功能,只需要滑鼠游標點到你想要執行到的那一行程式碼,Ctrl+F10,程式直接停在了滑鼠游標的那行程式碼。

條件斷點(Conditional Breakpoint)

斷點大家都會用,條件斷點相信對於經常除錯的也不陌生,使用方法如下圖,

看上面這個右鍵選單,Hit Count估計很多人也再用,用它來指定在第幾次hit到這個斷點的時候斷下來,

接下來就更高階一些,Filter,相信很多人在除錯多執行緒程式的時候都遇到過被其他執行緒干擾吧,好不容易斷下來,一步一步F10,忽然間另外一個執行緒又把前面斷點hit了,剛才我跳的執行緒是哪個?想找到就難了。接下來就需要Filter來出場了。通過Filter我們可以過濾需要break的機器/程式/執行緒。

接下來就是When Hit選項了,這個估計很多人用過它來跟蹤變數,上圖,帶過。

Export, 匯出斷點的功能用的就更少了,其實有些場景斷點匯出可以讓你少費很多話。比如你在某段程式碼發現一個別人的bug,你可以將斷點匯出為xml,然後將它attach到bug上,bug owner直接找到對應版本匯入斷點,執行程式就可以了。

 

資料提示(Data Tips)

除錯的時候將滑鼠放在變數名上來檢視關心的資料,我們都是這麼做的,但是如果一段邏輯需要反覆執行,例如除錯某段演算法,你可以多點一下滑鼠,將這個變數釘在程式碼旁邊,這樣比去watch視窗看要少轉很多眼珠哦。

另外這些data tip也是可以匯入和匯出的。

 

檢視反彙編程式碼

檢視反彙編程式碼可以說是一個VisualStudio裡面的一個隱藏功能,這個功能很少有人會注意到,但是對於我們想要學習組合語言或者理解一些特定的編譯器行為有很大的幫助。這個功能將組合語言和原始碼參照顯示,理解起來容易許多。

使用該功能很簡單,以我們在windbg u/uf/ub命令介紹中的程式程式碼qsort.c為例,在VisualStudio裡面開啟程式,設定斷點,直接通過VisualStudio執行程式,或者attach到已經執行的程式中,當斷點被觸發後,右鍵然後選擇go to disassembly,

反彙編效果如下,接下來再看swap方法的彙編程式碼,是不是很容易理解了?

相關文章