代碼調(diào)試是程序員必須掌握的一門技巧,掌握代碼調(diào)試對以后學(xué)習(xí),錯誤排除,源碼研究等都有很大的幫助。
前言
再牛的程序員也沒法一口氣把代碼全部寫正確,通常做法就是寫一小段然后驗(yàn)證代碼正確性,再繼續(xù)寫下一段,這樣能保證代碼不會錯得太離譜。怎么衡量一小段代碼呢?在你覺得這段代碼沒有十足把握的情況下就應(yīng)該停下來驗(yàn)證一下。
調(diào)試的本質(zhì)是確認(rèn)你認(rèn)為正確的事情確實(shí)是正確的,這次來介紹一下 Vs中調(diào)試代碼的 N 種姿勢
斷點(diǎn)調(diào)試常用術(shù)語
“單步進(jìn)入”step into:就是單步執(zhí)行,遇到子函數(shù)就進(jìn)入并且繼續(xù)單步執(zhí)行;
“單步執(zhí)行并跳過”step over:是在單步執(zhí)行時,在函數(shù)內(nèi)遇到子函數(shù)時不會進(jìn)入子函數(shù)內(nèi)單步執(zhí)行,而是將子函數(shù)整個執(zhí)行完再停止,也就是把子函數(shù)整個作為一步。
“單步執(zhí)行并返回”step return:就是單步執(zhí)行到子函數(shù)內(nèi)時,用step return就可以執(zhí)行完子函數(shù)余下部分,并返回到上一層函
數(shù)。
“繼續(xù)執(zhí)行”:即跳過此斷點(diǎn)繼續(xù)運(yùn)行。
簡單的例子
先來看一個簡單的代碼,如下,代碼很簡單,結(jié)果顯而易見,咱們來調(diào)試一下這個代碼
1,進(jìn)入調(diào)試
點(diǎn)擊菜單欄->調(diào)試->逐語句 或者使用快捷鍵“F11”
進(jìn)入之后,在main函數(shù)的第一行,會出現(xiàn)一個黃色小箭頭,代表這此時代碼執(zhí)行到的位置。
接下來繼續(xù)按"F11",即可逐步執(zhí)行每行代碼了,執(zhí)行的過程中,我們需要查看變量的值的變化,菜單欄->調(diào)試->窗口->局部變量,先點(diǎn)擊這個打開局部變量窗口
此時我們會在下面的窗口中看到變量,目前在內(nèi)存里面的數(shù)據(jù)及類型
當(dāng)我們繼續(xù)執(zhí)行時,會發(fā)現(xiàn)局部變量窗口中的變量的值發(fā)生了改變,很直觀即可看到結(jié)果
當(dāng)執(zhí)行到函數(shù)調(diào)用語句時,會進(jìn)入函數(shù)內(nèi)部執(zhí)行,而且局部變量里面會同步顯示函數(shù)里面的變量信息
函數(shù)執(zhí)行結(jié)束,會返回到調(diào)用處,而且局部變量窗口會顯示返回值信息
這就是逐步調(diào)試一個簡單的流程,你學(xué)會了嗎?
逐步調(diào)試配合斷點(diǎn)
再來看一個簡單的代碼,如下
如果按"F11"使用單步調(diào)試,那么我們需要在循環(huán)處,按10次才能執(zhí)行到printf語句。我們可以結(jié)合斷點(diǎn),快速跳過循環(huán)。
1,添加斷點(diǎn)
把光標(biāo)移動到需要加斷點(diǎn)的行,然后按"F9",或者用鼠標(biāo)在需要加斷點(diǎn)的行前面的灰色區(qū)域點(diǎn)一下。
2,跳過循環(huán)
首先逐步調(diào)試到循環(huán)處,然后按"繼續(xù)"即可直接執(zhí)行到最近的斷點(diǎn)所在的行
點(diǎn)“繼續(xù)”直接跳轉(zhuǎn)到斷點(diǎn)處
3,刪除斷點(diǎn)
重復(fù)添加斷點(diǎn)的步驟即可
-
調(diào)試
+關(guān)注
關(guān)注
7文章
589瀏覽量
34080 -
源碼
+關(guān)注
關(guān)注
8文章
653瀏覽量
29512 -
代碼
+關(guān)注
關(guān)注
30文章
4837瀏覽量
69122
發(fā)布評論請先 登錄
相關(guān)推薦
Linux使用VScode編譯調(diào)試C/C++程序的過程是怎樣的
c++程序設(shè)計教程
![<b class='flag-5'>c++</b><b class='flag-5'>程序</b>設(shè)計教程](https://file.elecfans.com/web2/M00/48/70/pYYBAGKhtAaAQ4u6AAASDE03weE518.jpg)
《C/ C++/ Java 程序設(shè)計經(jīng)典教程》
c++程序設(shè)計語言題解
![<b class='flag-5'>c++</b><b class='flag-5'>程序</b>設(shè)計語言題解](https://file.elecfans.com/web2/M00/48/7D/pYYBAGKhtAmATaZeAAAgiB-ypOI324.jpg)
c++程序設(shè)計習(xí)題答案
![<b class='flag-5'>c++</b><b class='flag-5'>程序</b>設(shè)計習(xí)題答案](https://file.elecfans.com/web2/M00/48/7D/pYYBAGKhtAmAaTOHAABDvgYQAW0069.jpg)
面向?qū)ο蟮?b class='flag-5'>程序設(shè)計(C++)
C++入門教程之C++程序設(shè)計的課件資料免費(fèi)下載
![<b class='flag-5'>C++</b>入門教程之<b class='flag-5'>C++</b><b class='flag-5'>程序</b>設(shè)計的課件資料免費(fèi)下載](https://file.elecfans.com/web1/M00/7D/9D/pIYBAFwJzPaATfGzAAB9eKe7fFA045.png)
C++程序設(shè)計教程之C++的初步知識的詳細(xì)資料說明
![<b class='flag-5'>C++</b><b class='flag-5'>程序</b>設(shè)計教程之<b class='flag-5'>C++</b>的初步知識的詳細(xì)資料說明](https://file.elecfans.com/web1/M00/89/2B/o4YBAFyJ-q-AYUB7AAVUPZRjpCQ608.png)
C++程序設(shè)計的基礎(chǔ)知識初步了解C++的資料免費(fèi)下載
![<b class='flag-5'>C++</b><b class='flag-5'>程序</b>設(shè)計的基礎(chǔ)知識初步了解<b class='flag-5'>C++</b>的資料免費(fèi)下載](https://file.elecfans.com/web1/M00/95/47/o4YBAFz-DYOAIEloAACt1tceweA466.png)
Dev C++的應(yīng)用程序免費(fèi)下載
![Dev <b class='flag-5'>C++</b>的應(yīng)用<b class='flag-5'>程序</b>免費(fèi)下載](https://file.elecfans.com/web1/M00/C6/CD/o4YBAF9kCsaAIub-AAA5wqJ_OuU973.png)
評論