代碼調(diào)試是程序員必備技巧,簡(jiǎn)單示例,VS如何調(diào)試C++程序
代碼調(diào)試是程序員必須掌握的一門(mén)技巧,掌握代碼調(diào)試對(duì)以后學(xué)習(xí),錯(cuò)誤排除,源碼研究等都有很大的幫助。
前言
再牛的程序員也沒(méi)法一口氣把代碼全部寫(xiě)正確,通常做法就是寫(xiě)一小段然后驗(yàn)證代碼正確性,再繼續(xù)寫(xiě)下一段,這樣能保證代碼不會(huì)錯(cuò)得太離譜。怎么衡量一小段代碼呢?在你覺(jué)得這段代碼沒(méi)有十足把握的情況下就應(yīng)該停下來(lái)驗(yàn)證一下。
斷點(diǎn)調(diào)試常用術(shù)語(yǔ)
“單步進(jìn)入”step into:就是單步執(zhí)行,遇到子函數(shù)就進(jìn)入并且繼續(xù)單步執(zhí)行;
“單步執(zhí)行并跳過(guò)”step over:是在單步執(zhí)行時(shí),在函數(shù)內(nèi)遇到子函數(shù)時(shí)不會(huì)進(jìn)入子函數(shù)內(nèi)單步執(zhí)行,而是將子函數(shù)整個(gè)執(zhí)行完再停止,也就是把子函數(shù)整個(gè)作為一步。
“單步執(zhí)行并返回”step return:就是單步執(zhí)行到子函數(shù)內(nèi)時(shí),用step return就可以執(zhí)行完子函數(shù)余下部分,并返回到上一層函
數(shù)。
“繼續(xù)執(zhí)行”:即跳過(guò)此斷點(diǎn)繼續(xù)運(yùn)行。
簡(jiǎn)單的例子
先來(lái)看一個(gè)簡(jiǎn)單的代碼,如下,代碼很簡(jiǎn)單,結(jié)果顯而易見(jiàn),咱們來(lái)調(diào)試一下這個(gè)代碼

1,進(jìn)入調(diào)試
點(diǎn)擊菜單欄->調(diào)試->逐語(yǔ)句 或者使用快捷鍵“F11”

進(jìn)入之后,在main函數(shù)的第一行,會(huì)出現(xiàn)一個(gè)黃色小箭頭,代表著此時(shí)代碼執(zhí)行到的位置。

接下來(lái)繼續(xù)按"F11",即可逐步執(zhí)行每行代碼了,執(zhí)行的過(guò)程中,我們需要查看變量的值的變化,菜單欄->調(diào)試->窗口->局部變量,先點(diǎn)擊這個(gè)打開(kāi)局部變量窗口

此時(shí)我們會(huì)在下面的窗口中看到變量,目前在內(nèi)存里面的數(shù)據(jù)及類(lèi)型

當(dāng)我們繼續(xù)執(zhí)行時(shí),會(huì)發(fā)現(xiàn)局部變量窗口中的變量的值發(fā)生了改變,很直觀即可看到結(jié)果

當(dāng)執(zhí)行到函數(shù)調(diào)用語(yǔ)句時(shí),會(huì)進(jìn)入函數(shù)內(nèi)部執(zhí)行,而且局部變量里面會(huì)同步顯示函數(shù)里面的變量信息

函數(shù)執(zhí)行結(jié)束,會(huì)返回到調(diào)用處,而且局部變量窗口會(huì)顯示返回值信息

這就是逐步調(diào)試一個(gè)簡(jiǎn)單的流程,你學(xué)會(huì)了嗎?
逐步調(diào)試配合斷點(diǎn)
再來(lái)看一個(gè)簡(jiǎn)單的代碼,如下

如果按"F11"使用單步調(diào)試,那么我們需要在循環(huán)處,按10次才能執(zhí)行到printf語(yǔ)句。我們可以結(jié)合斷點(diǎn),快速跳過(guò)循環(huán)。
1,添加斷點(diǎn)
把光標(biāo)移動(dòng)到需要加斷點(diǎn)的行,然后按"F9",或者用鼠標(biāo)在需要加斷點(diǎn)的行前面的灰色區(qū)域點(diǎn)一下。

2,跳過(guò)循環(huán)
首先逐步調(diào)試到循環(huán)處,然后按"繼續(xù)"即可直接執(zhí)行到最近的斷點(diǎn)所在的行

點(diǎn)“繼續(xù)”直接跳轉(zhuǎn)到斷點(diǎn)處


3,刪除斷點(diǎn)
重復(fù)添加斷點(diǎn)的步驟即可
好了,簡(jiǎn)單調(diào)試就介紹到這里,大家可以先練習(xí)一下,后面介紹復(fù)雜的示例。