前言:
看到不少同學(xué)在學(xué)習(xí)過程中總會碰到各種與自己期望不符的結(jié)果而不知所措,如運行結(jié)果不對,程序運行崩潰、輸出亂碼等這種語法正確編譯能通過而邏輯不正確的情況,發(fā)生這類問題大多都是因為我們無法掌控編譯器和預(yù)測程序運行過程導(dǎo)致的,使得程序在執(zhí)行過程中已經(jīng)發(fā)生問題而沒有被我們發(fā)覺。而最好的解決辦法就是斷點調(diào)試!
本文將帶領(lǐng)大家以VC6編譯器為例,學(xué)習(xí)如何斷點分析和調(diào)試我們的C程序,讓大家具備基本的斷點調(diào)試能力!
以下正文:
當(dāng)程序運行起的瞬間,程序就會馬上退出,感應(yīng)快的你可能會看到一個一閃而過的黑窗口以及似乎有點內(nèi)容的輸出。這就是一個程序的從生到死的過程,快如閃電丫。
那么,我們?nèi)绾巫尦绦虿灰淮涡詧?zhí)行完,定格在莫一處呢? 特別是對于查找問題,調(diào)試bug。如果當(dāng)你意識到這些問題時,斷點調(diào)試這個技巧你就應(yīng)該馬上掌握了!
先寫一個簡答例子代碼,帶循環(huán)的,如下
斷點第一步:設(shè)置斷點(什么是斷點?就是程序停止、斷開的一個位置),將鼠標放到你想要程序停止的位置點擊一下,然后按F9鍵,如下圖
會看到一個深紅色的大圓點!這個就是“斷點”了,這個時候,當(dāng)在調(diào)試情況下運行這個程序的時候,程序執(zhí)行時就會停在這里。怎么樣?不信,那就試試,按F5鍵
怎么樣,看到了嗎?程序現(xiàn)在沒結(jié)束,甚至一句話都沒輸出呢!(應(yīng)該輸出100行www.sztianhecheng.cn)
而原來大紅色的圓點上還多了一個黃色的箭頭!什么意思呢?這個黃色的箭頭就是表示程序?qū)⒁獔?zhí)行的語句!
也就是說接下來要執(zhí)行這個printf,但還沒有執(zhí)行!所以屏幕上一句輸出也沒有!
接下來,繼續(xù)按F5向下執(zhí)行,直到遇到下一個斷點,此時屏幕上會輸出一行www.sztianhecheng.cn,如圖
同時請注意,下方i的值已經(jīng)變成了1!,這說明循環(huán)已經(jīng)執(zhí)行了一次!
大家可以繼續(xù)按F5繼續(xù)執(zhí)行,繼續(xù)觀察變化!
如果希望結(jié)束斷點的話,可以在斷點所在行,繼續(xù)點擊一下鼠標左鍵即可取消斷點,再按F5即可和正常一樣執(zhí)行完程序。
怎么樣,會了嗎?
當(dāng)然還沒結(jié)束,除了設(shè)置斷點F5繼續(xù)執(zhí)行以外,還可以單步執(zhí)行,快捷鍵F10,怎么用呢?
還是這個程序,第一次F5以后,也可以按F10單步執(zhí)行一句,發(fā)現(xiàn)黃色箭頭往下走一行,同時屏幕多輸出一句話。效果如圖:
大家可以自行嘗試,可以F10一直逐行單步執(zhí)行。同時注意觀察下方變量的變化情況,來加深對程序執(zhí)行過程的理解!
請同學(xué)們熟練掌握F5、F9、F10快捷鍵的使用方法,配合程序,觀察變量、函數(shù)返回值等信息的變化情況,加深對程序的理解!
以上
C語言研究中心(www.sztianhecheng.cn)