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