Visual Studio那些隱藏的調(diào)試功能
Visual Studio 是一個強(qiáng)大的調(diào)試工具,里面很多隱藏功能少有人問津,但是在特定場景可以節(jié)省你很多時間,本文主要介紹一些Visual Studio調(diào)試相關(guān)的隱藏功能,歡迎大家補(bǔ)充。
運行到光標(biāo)(Run to cursor)
大多數(shù)人用Visual Studio在調(diào)試程序的時候先在程序開始的時候設(shè)置一個斷點,然后依次F10/F11到自己想要查看的邏輯。如果這個過程我們需要仔細(xì)查看每一步的變量 或者執(zhí)行路徑,這樣做無可厚非,但是如果我們不想關(guān)心前面執(zhí)行的邏輯,我們可以使用Run to cursor功能,只需要鼠標(biāo)光標(biāo)點到你想要執(zhí)行到的那一行代碼,Ctrl+F10,程序直接停在了鼠標(biāo)光標(biāo)的那行代碼。
條件斷點(Conditional Breakpoint)
斷點大家都會用,條件斷點相信對于經(jīng)常調(diào)試的也不陌生,使用方法如下圖,
看上面這個右鍵菜單,Hit Count估計很多人也再用,用它來指定在第幾次hit到這個斷點的時候斷下來,
接下來就更高級一些,Filter,相信很多人在調(diào)試多線程程序的時候都遇到過被其他線程干擾吧,好不容易斷下 來,一步一步F10,忽然間另外一個線程又把前面斷點hit了,剛才我跳的線程是哪個?想找到就難了。接下來就需要Filter來出場了。通過 Filter我們可以過濾需要break的機(jī)器/進(jìn)程/線程。
接下來就是When Hit選項了,這個估計很多人用過它來跟蹤變量,上圖,帶過。
Export, 導(dǎo)出斷點的功能用的就更少了,其實有些場景斷點導(dǎo)出可以讓你少費很多話。比如你在某段代碼發(fā)現(xiàn)一個別人的bug,你可以將斷點導(dǎo)出為xml,然后將它attach到bug上,bug owner直接找到對應(yīng)版本導(dǎo)入斷點,運行程序就可以了。
#p#
數(shù)據(jù)提示(Data Tips)
調(diào)試的時候?qū)⑹髽?biāo)放在變量名上來查看關(guān)心的數(shù)據(jù),我們都是這么做的,但是如果一段邏輯需要反復(fù)執(zhí)行,例如調(diào)試某段算法,你可以多點一下鼠標(biāo),將這個變量釘在代碼旁邊,這樣比去watch窗口看要少轉(zhuǎn)很多眼珠哦。
另外這些data tip也是可以導(dǎo)入和導(dǎo)出的。
查看反匯編代碼
查看反匯編代碼可以說是一個VisualStudio里面的一個隱藏功能,這個功能很少有人會注意到,但是對于我們想要學(xué)習(xí)匯編語言或者理解一些特定的編譯器行為有很大的幫助。這個功能將匯編語言和源代碼參照顯示,理解起來容易許多。
使用該功能很簡單,以我們在windbg u/uf/ub命令介紹中的程序代碼qsort.c為例,在VisualStudio里面打開程序,設(shè)置斷點,直接通過VisualStudio運行程序,或者attach到已經(jīng)運行的程序中,當(dāng)斷點被觸發(fā)后,右鍵然后選擇go to disassembly,
反匯編效果如下,接下來再看swap方法的匯編代碼,是不是很容易理解了?
原文鏈接:http://www.cnblogs.com/developersupport/p/visualstudio-debugging-tips.html