|
注:如無(wú)特別說(shuō)明Visual Studio均指Dev10即Visual Studio 2010。
入門(mén)篇
假設(shè)你是有著.NET平臺(tái)的程序員,并且使用Visual Studio 做為開(kāi)發(fā)工具。
斷點(diǎn):最簡(jiǎn)單的一種,設(shè)置一個(gè)斷點(diǎn),程序執(zhí)行到那一句就自動(dòng)中斷進(jìn)入調(diào)試狀態(tài)。設(shè)置斷點(diǎn),在你覺(jué)得有問(wèn)題的代碼行,左側(cè)單擊,會(huì)出現(xiàn)紅色的紅點(diǎn)即斷點(diǎn)。
啟動(dòng)調(diào)式:按F5,或者菜單欄---調(diào)式---開(kāi)始調(diào)試,或者工具欄的圖標(biāo):
快速監(jiān)視:快速查看變量或者表達(dá)式的值,也可以自定義表達(dá)式進(jìn)行計(jì)算:
單步執(zhí)行
有三種,一種是每次執(zhí)行一行(F10);一種是每次執(zhí)行一行,但遇到函數(shù)調(diào)用就會(huì)跳到被調(diào)用的函數(shù)里(F11);一種是直接執(zhí)行當(dāng)前函數(shù)里剩下的指令,返回上一級(jí)函數(shù)(Shift+F11)。
還有一種后悔藥,設(shè)為下一句(Set Next Statement),即下一句會(huì)被執(zhí)行的語(yǔ)句(右擊設(shè)置或者快捷鍵:Ctrl+Shift+F10),但要注意在調(diào)試與數(shù)據(jù)有關(guān)的時(shí)候,設(shè)置下一句有可能會(huì)報(bào)異常。如在調(diào)試向DataTable中添加行的時(shí)候,已經(jīng)存在的行不能重復(fù)被添加到DataTable中。
監(jiān)視
調(diào)試器可能會(huì)自動(dòng)列出一些相關(guān)變量的值,但是你可能還關(guān)心其它變量的值,可以添加對(duì)這些變量的監(jiān)視。還可以監(jiān)視一個(gè)表達(dá)式的值,比如a+b。但是,這個(gè)表達(dá)式最好不要修改變量的值,比如監(jiān)視a++都會(huì)導(dǎo)致監(jiān)視時(shí)修改了a的值,影響了程序的運(yùn)行結(jié)果。
調(diào)試技巧篇
使用快捷鍵會(huì)大大提升我們的調(diào)試效率,常用的調(diào)試快捷鍵:
F5 啟動(dòng)調(diào)試
F10 執(zhí)行下一行代碼,但不執(zhí)行任何函數(shù)調(diào)用。
F11 在執(zhí)行進(jìn)入函數(shù)調(diào)用后,逐條語(yǔ)句執(zhí)行代碼。
Shift + F11 執(zhí)行當(dāng)前執(zhí)行點(diǎn)所處函數(shù)的剩余行。
Shift + F5 停止運(yùn)行程序中的當(dāng)前應(yīng)用程序??捎糜?ldquo;中斷”模式和“運(yùn)行”模式。
條件中斷
假如你寫(xiě)了個(gè)for循環(huán),而且循環(huán)的次數(shù)比較多,如下代碼,現(xiàn)在我們知道在i=50的時(shí)候會(huì)有異常,那我們不可能按50次F5去調(diào)試這代碼,不然這效率。
private void ConditionDebug()
{
for (int i = 0; i < 100; i++)
{
if (i==50)
{
//some error code here
Console.WriteLine("i=50 here");
}
}
}
NET技術(shù):C#調(diào)試心經(jīng),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。