1、寫一個(gè)有bug的簡(jiǎn)單程序。
創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),泌陽(yáng)網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:泌陽(yáng)等地區(qū)。泌陽(yáng)做網(wǎng)站價(jià)格咨詢:18980820575
2、運(yùn)行程序,產(chǎn)生錯(cuò)誤,然后進(jìn)行debug調(diào)試。可以按照?qǐng)D示進(jìn)入調(diào)試,也可以直接按快捷鍵F10。
3、首先憑借直覺(jué),設(shè)置斷點(diǎn)。
4、觀察變量值的變化,是否在要求的范圍內(nèi),或者運(yùn)行時(shí)程序是否產(chǎn)生內(nèi)存溢出;最終發(fā)現(xiàn)在*a=1出產(chǎn)生錯(cuò)誤,改正后,再運(yùn)行。
5、修改程序后重新編譯,若無(wú)錯(cuò)誤,即完成,若有錯(cuò)誤,繼續(xù)進(jìn)行第三步和第四步,直至錯(cuò)誤消除或者產(chǎn)生正確結(jié)果為止。
Restart(Ctrl+shift+F5):此debugger功能將從程序的開(kāi)始(第一有效行)處全速執(zhí)行,而不是從當(dāng)前所跟蹤的位置開(kāi)始調(diào) 試,這時(shí)所有變量的當(dāng)前值都將被丟棄,debugger會(huì)自動(dòng)停在程序的main()開(kāi)始處.這時(shí)如果選擇Step Over(F10)就可以逐步執(zhí)行main()函數(shù)了.Stop Debugging(Shift+F5):此debugger功能將終止(所有)調(diào)試,并返回到常規(guī)編輯狀態(tài). Break(此功能常常在遇到調(diào)用函數(shù)的語(yǔ)句時(shí)可見(jiàn).):此功能將在調(diào)試過(guò)程中的debugger當(dāng)前位置掛起程序的執(zhí)行,然后就可以在調(diào) 試狀態(tài)一修改程序的代碼,接著可以用Apply Code Changes(Alt+F10)來(lái)應(yīng)用修改的代碼到正在調(diào)試的程序當(dāng)中.如果,當(dāng)前(需要,待)可以(從DOS等窗口)輸入值,掛起后將不能再輸入.Apply Code Changes(Alt+F10):此功能可以在程序正在調(diào)試程序過(guò)程中應(yīng)用(掛起)修改后的源代碼.如,選擇Break功能并修改代 碼后,只要選擇Apply Code Changes(Alt+F10)就能將修改后的代碼應(yīng)用到正在調(diào)試的程序當(dāng)中.Show Next Statement(Alt+Num*):此功能將顯示程序代碼的下一條語(yǔ)句,如果源代碼中找不到,則在Disassembly窗口中顯示語(yǔ)句. 當(dāng)在Disassembly窗口中顯示時(shí),可以單擊Disassembly 返回到源代碼窗口. Step Into(F11):此功能可以單步進(jìn)入到在調(diào)試過(guò)程中所跟蹤的調(diào)用函數(shù)的語(yǔ)句的函數(shù)內(nèi)部.如,當(dāng)前語(yǔ)句是"d.Display()", 選擇Step Into(F11)后,Debugger將進(jìn)入Display()函數(shù)內(nèi)部并停在Display()函數(shù)內(nèi)部的第一條語(yǔ)句上.(此時(shí),就可以Step Over(F10)對(duì)Display()函數(shù)進(jìn)行單步調(diào)試了.)Step Over(F10):此功能可以單步對(duì)所在函數(shù)單步調(diào)試,如果調(diào)試的語(yǔ)句是一個(gè)調(diào)用函數(shù)的語(yǔ)句時(shí), Debugger將全速執(zhí)行所調(diào)用的函數(shù),單步(一步)通過(guò)所調(diào)用的函數(shù),Debugger停該調(diào)用語(yǔ)句的下一條語(yǔ)句上.Step Out(Shift+F11):此功能將使Debugger切換回全速執(zhí)行到被調(diào)用函數(shù)結(jié)束,并停在該函數(shù)調(diào)用語(yǔ)句的下一條語(yǔ)句上. 當(dāng)確定所調(diào)用的函數(shù)沒(méi)有問(wèn)題時(shí)可以用這個(gè)功能全速執(zhí)行被調(diào)用函數(shù).Run to Cursor(Ctrl+F10):此功能將全速執(zhí)行到包含插入點(diǎn)光標(biāo)所在的行,可以作為在插入點(diǎn)光標(biāo)處設(shè)置常規(guī)斷點(diǎn)的一種選擇. 注意,當(dāng)光標(biāo)處不是一個(gè)有效的執(zhí)行語(yǔ)句時(shí)此功能將不起作用. Go(F5):此功能將全速執(zhí)行程序直到遇到一個(gè)斷點(diǎn)或程序結(jié)束,或直到程序暫停等待用戶輸入.
單步調(diào)試是指在程序開(kāi)發(fā)中,為了找到程序的bug,通常采用的一種調(diào)試手段,一步一步跟蹤程序執(zhí)行的流程,根據(jù)變量的值,找到錯(cuò)誤的原因。
在VC++6.0中的單步調(diào)試:
調(diào)試重要的幾個(gè)鍵:
F9在當(dāng)前光標(biāo)所在的行下斷點(diǎn),如果當(dāng)前行已經(jīng)有斷點(diǎn),則取消斷點(diǎn).
F5調(diào)試狀態(tài)運(yùn)行程序,程序執(zhí)行到有斷點(diǎn)的地方會(huì)停下來(lái).
F10單步執(zhí)行程序.
CTRL+F10運(yùn)行到光標(biāo)所在行.
F11和F10的區(qū)別是,如果當(dāng)前執(zhí)行語(yǔ)句是函數(shù)調(diào)用,則會(huì)進(jìn)入函數(shù)里面.
SHIFT+F11跳出當(dāng)前所在函數(shù).
步驟:
1,保存為c或c++文件
2,根據(jù)斷點(diǎn)調(diào)試找到錯(cuò)誤處。
3,采用F10或F11單步調(diào)試找到精確的錯(cuò)誤處。其中f10是跳過(guò)函數(shù)調(diào)用,f11是進(jìn)入函數(shù)體調(diào)試。一般是先用f10,確定函數(shù)輸入輸出是否正確(與自己想的一樣),如不一樣,則用f11進(jìn)入函數(shù)體一步一步調(diào)試。
4,在調(diào)試過(guò)程中,肯定得監(jiān)視程序中的變量。在vc6.0的右下角有一個(gè)watch窗口,專門用來(lái)設(shè)置監(jiān)視變量。具體怎樣設(shè)置自己體會(huì)吧。在調(diào)試過(guò)程中,鼠標(biāo)輕輕放在變量上也會(huì)顯示該變量的值
5,vc6.0專門為調(diào)試設(shè)置了工具箱以方便調(diào)試的進(jìn)行,打開(kāi)的方法如下。右鍵——〉在debug(或調(diào)試)選擇項(xiàng)的勾勾上。
簡(jiǎn)單說(shuō)
F10 是逐行 在某條語(yǔ)句調(diào)用一個(gè)函數(shù)的時(shí)候 它不會(huì)進(jìn)入(除非那里設(shè)有斷點(diǎn))
F11 是逐步 它是會(huì)進(jìn)入函數(shù)的 把程序細(xì)化到步
下面這段代碼
執(zhí)行到第三行時(shí)
F11是可以進(jìn)入take函數(shù)的 F10則不能進(jìn)入
int a=10;
a = 3
a = take();
a = 10;
int take(){
return 1;
}
scanf函數(shù)是阻塞,等待用戶輸入數(shù)據(jù)才能繼續(xù)
如果跳過(guò)scanf下面的調(diào)試無(wú)法進(jìn)行
文章名稱:c語(yǔ)言單步調(diào)試跟蹤函數(shù) c語(yǔ)言單步跟蹤如何使用
文章網(wǎng)址:http://www.chinadenli.net/article22/hpgjcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、小程序開(kāi)發(fā)、品牌網(wǎng)站制作、軟件開(kāi)發(fā)、建站公司、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)