




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、VC+6.0調(diào)試工具使用初步 【摘要】程序設(shè)計(jì)初者學(xué)會(huì)IDE(集成開(kāi)發(fā)環(huán)境)中提供的調(diào)試工具,是一件非常重要的事。本文在初學(xué)者有初步的程序設(shè)計(jì)體驗(yàn)(只需要掌握到控制結(jié)構(gòu))為前提,介紹了單步執(zhí)行、斷點(diǎn)設(shè)置及觀察程序運(yùn)行情況的方法,并配有練習(xí)的建議,方便讀者的學(xué)習(xí)。在編寫(xiě)程序中,尤其是完成一個(gè)工程的過(guò)程中,通過(guò)編譯的程序往往也會(huì)存在錯(cuò)誤(bug)。這種錯(cuò)誤是運(yùn)行錯(cuò)誤和邏輯錯(cuò)誤,比語(yǔ)法錯(cuò)誤更隱蔽,更危險(xiǎn)。如何找出這些錯(cuò)誤?在冗長(zhǎng)的代碼中,找出這些錯(cuò)誤來(lái)并不總是一件容易的事。排錯(cuò)(debug)是一件程序員不得不面對(duì)的麻煩事,但真正的程序員會(huì)把與bug戰(zhàn)斗當(dāng)成自己的神圣使命。調(diào)試程序是程序員應(yīng)該具備的基
2、本能力。在學(xué)習(xí)編寫(xiě)程序過(guò)程中,學(xué)會(huì)調(diào)試程序是最實(shí)用的技能之一。可以純粹依靠人工,一行一行,或一塊一塊地檢查,思考,很累人。也可以像現(xiàn)有的各種教材及課堂教學(xué)中介紹的,輸出變量及中間變量(用輸出語(yǔ)句cout<<.;),以觀察運(yùn)行結(jié)果及運(yùn)行的中間結(jié)果。這種方法簡(jiǎn)潔方便,但增加了寫(xiě)代碼的維護(hù)量,同時(shí),有時(shí)并不能方便地找到問(wèn)題所在。在實(shí)際的工作中,調(diào)試工作常用IDE(集成開(kāi)發(fā)環(huán)境,如VC+6.0)提供的工具進(jìn)行。本文旨在指導(dǎo)同學(xué)們初步學(xué)會(huì)利用VC+6.0調(diào)試程序的方法,學(xué)會(huì)單步運(yùn)行程序和使用斷點(diǎn)的方法,并在過(guò)程中觀察運(yùn)行環(huán)境(最重要的是變量)的變化,從而在今后能夠高效地完成程序的調(diào)試。一、認(rèn)
3、識(shí)調(diào)試功能在組建(build)菜單中,點(diǎn)擊開(kāi)始調(diào)試(start debug),在其下級(jí)子菜單中,包含了啟動(dòng)調(diào)試器運(yùn)行的各項(xiàng)子命令(如圖1所示)圖1 開(kāi)始調(diào)試菜單各子命令及其功能如下:· Go:從程序中的當(dāng)前語(yǔ)句開(kāi)始執(zhí)行,直到遇到斷點(diǎn)(后面講)或遇到程序結(jié)束。 · Step Into:控制程序單步執(zhí)行,并在遇到函數(shù)調(diào)用時(shí)進(jìn)入函數(shù)內(nèi)部。 · Run to Cursor:在調(diào)試運(yùn)行程序時(shí),使程序運(yùn)行到當(dāng)前光標(biāo)所在位置時(shí)停止,相當(dāng)于設(shè)置了一個(gè)臨時(shí)斷點(diǎn)。二、單步調(diào)試代碼利用圖1菜單中的Step into功能或按F11鍵,進(jìn)入單步調(diào)試狀態(tài),有一個(gè)箭頭指向程序的第一行,每按一次
4、F11鍵,程序再向前執(zhí)行一行語(yǔ)句,如圖2所示。圖2 開(kāi)始調(diào)試后的界面我們對(duì)圖2的界面進(jìn)行觀察。首先,菜單中增加一個(gè)調(diào)試(debug)菜單,如圖中處,下面是菜單中的部分功能(鼠標(biāo)浮到上面時(shí),會(huì)有提示,請(qǐng)?jiān)囈辉嚒#?#183; Step Into(F11):?jiǎn)尾秸{(diào)試程序,遇到調(diào)用函數(shù)時(shí),進(jìn)入函數(shù)內(nèi)部逐步執(zhí)行; · Step Over(F10):也是單步調(diào)試程序,遇到調(diào)用函數(shù)時(shí),并不進(jìn)入函數(shù)內(nèi)容執(zhí)行; · Step Out:調(diào)試程序時(shí),從正在執(zhí)行的某個(gè)嵌套結(jié)構(gòu)的內(nèi)部跳到該結(jié)構(gòu)的外部,常用于知道調(diào)用函數(shù)中不存在錯(cuò)誤的情況; · Run to Cursor(CTRL-F10
5、):調(diào)試程序時(shí),直接運(yùn)行到插入點(diǎn)處。其次,和當(dāng)前正在執(zhí)行的語(yǔ)句相關(guān)的變量,以及其當(dāng)前的值顯示在了處。 再次,黃色箭頭代表了正在執(zhí)行的位置。【練習(xí)1】下面,針對(duì)求1+2+3+.+100的程序,體驗(yàn)單步執(zhí)行。步驟:(1)編寫(xiě)如圖所示求1+2+3+.+100的程序,排除編譯錯(cuò)誤;(2)按前述開(kāi)始單步執(zhí)行,用“Step Into(F11)”持續(xù)執(zhí)行,在執(zhí)行過(guò)程中,注意觀察變量的變化。· 調(diào)試中,要將自己的預(yù)期和計(jì)算機(jī)執(zhí)行的結(jié)果進(jìn)行比較,當(dāng)發(fā)現(xiàn)不一致,恭喜,問(wèn)題找到了。 · 本程序循環(huán)要執(zhí)行100次!有的程序進(jìn)入循環(huán)要執(zhí)行的次數(shù)更多,而初步跟蹤確定循環(huán)不可能出問(wèn)題,需要快速
6、“跳出”循環(huán)。將光標(biāo)移到循環(huán)后,用“Run to Cursor”,程序即運(yùn)行到光標(biāo)處。 · 在cout<<.一行繼續(xù)F11,會(huì)嚇人一跳,出現(xiàn)的界面是:圖3 程序會(huì)運(yùn)行到“看不懂”的代碼中去,用Step Out功能退出這是因?yàn)镕11的單步運(yùn)行,進(jìn)入到了實(shí)現(xiàn)cout功能的代碼中去了(教訓(xùn):以后再到這兒,切記用Step Over(F10),而不是Step Into(F11)),此時(shí)請(qǐng)用Step Out功能可以退出。【練習(xí)2】再將上面的過(guò)程進(jìn)行幾遍,熟練上述過(guò)程,學(xué)會(huì)觀察,會(huì)靈活使用Step Over(F10)、Step Into(F11)、Step Out和Run to Cur
7、sor處理。提示:Step Over(F10)和Step Into(F11)的區(qū)別將在學(xué)習(xí)函數(shù)后更加明確,需要跟蹤自定義函數(shù)內(nèi)部代碼時(shí),用Step Into(F11),不需要跟蹤時(shí),就Over過(guò)去了。【練習(xí)3】將光標(biāo)置于程序中某一語(yǔ)句上,用Run to Cursor(快捷鍵CTRL-F10),看看發(fā)生什么現(xiàn)象直接執(zhí)行到了光標(biāo)處!這是一種快速觀察的方法。(PS:本練習(xí)受1樓博友留言啟發(fā)加上,表示感謝。)三、設(shè)置斷點(diǎn)和斷點(diǎn)應(yīng)用斷點(diǎn)是程序執(zhí)行需要中斷的地方。可以讓程序中斷在需要的地方,從而方便其分析。有兩種設(shè)置斷點(diǎn)的方法,如圖4所示:· 將光標(biāo)移到需要設(shè)置斷點(diǎn)的程序行,點(diǎn)擊工具欄上的“手型
8、”按鈕設(shè)置斷點(diǎn)。 · 利用鼠標(biāo)右鍵設(shè)置:在程序行前的空白欄內(nèi)點(diǎn)鼠標(biāo)右鍵,選擇菜單中的Insert/Remove Breakpoints選項(xiàng)可以設(shè)置斷點(diǎn)。圖4設(shè)置斷點(diǎn)及相關(guān)工具設(shè)置了斷點(diǎn)的程序行前會(huì)出現(xiàn)一個(gè)黑色的實(shí)心圓圈。取消斷點(diǎn)用同樣的按鈕和菜單。Go(F5)命令從程序中的當(dāng)前語(yǔ)句開(kāi)始執(zhí)行,直到遇到斷點(diǎn)(后面講)或遇到程序結(jié)束。【練習(xí)4】在程序中隨意設(shè)置和取消斷點(diǎn)(一個(gè)程序中可以根據(jù)需要設(shè)置多個(gè)斷點(diǎn)),然后用Go命令(F5)執(zhí)行,觀察變量及程序流程的變化。技巧:在調(diào)試的過(guò)程中,可以直接使用Run to Cursor,從而避免多次的用Step Into/Over等命令。如果設(shè)置了斷點(diǎn),
9、直接運(yùn)行程序就可以在斷點(diǎn)處停止,從而避免程序員總得關(guān)注光標(biāo)的位置。一個(gè)程序中可以設(shè)多個(gè)斷點(diǎn),這也為程序員提供了方便。四、用好快捷鍵和“調(diào)試”工具欄在使用中記住各功能的快捷鍵,這將提高你的工作效率。快捷鍵可以從菜單中看到。可以在工具欄處點(diǎn)右鍵,選擇“調(diào)試”工具欄,如圖5,工具欄也可以方便你的工作。圖5 調(diào)試工具欄【練習(xí)5】將工具欄中的功能都點(diǎn)一點(diǎn),看一看,想一想,但不求甚解。隨著學(xué)習(xí)的深入,我們會(huì)逐步掌握。五、程序調(diào)試方法小結(jié)上面僅介紹了程序調(diào)試的基本方法,但靈活運(yùn)用可以為編寫(xiě)出正確的程序提供強(qiáng)大的支撐。隨著經(jīng)驗(yàn)的增加,簡(jiǎn)短且算法簡(jiǎn)單的程序你可能憑觀察就知一二。對(duì)需要觀察其運(yùn)行過(guò)程的程序,可以這
10、樣做:· 增加必要的斷點(diǎn)(當(dāng)然,嫌疑解除后去除斷點(diǎn)); · 如果必要,添加監(jiān)視,以便于觀察一些表達(dá)式的值; · 用Step Into、Step Over、Step Out或Run to Cursor等的組合,跟蹤程序執(zhí)行的過(guò)程 · 在運(yùn)行過(guò)程中,和自己對(duì)運(yùn)行結(jié)果的預(yù)期結(jié)合起來(lái),思考程序可能出現(xiàn)的問(wèn)題。 · 需要退出程序時(shí),使用調(diào)試菜單中的“Stop Debugging”選項(xiàng)終止執(zhí)行。這時(shí)再修改程序。 · 如果程序執(zhí)行異常,一定要告訴自己:程序中一定有bug,不是機(jī)器的錯(cuò),我得找出bug來(lái),Bug也一定會(huì)被你找出來(lái)。【實(shí)踐1】利用單步執(zhí)
11、行、設(shè)置斷點(diǎn)等手段,觀察下面程序執(zhí)行的過(guò)程1.cpp view plaincopyprint?1. #include <iostream> 2. using namespace std; 3. int main() 4. 5. int a=1,b=2,c=3; 6. if(a<=c) 7.
12、0; if(b=c) 8. cout<<"a="<<a<<endl; 9. else 10. cout<<"b="<<b<<endl; 11.
13、60; cout<<"c="<<c<<endl; 12. return 0; 13. #include <iostream>using namespace std;int main() int a=1,b=2,c=3; if(a<=c) if(b=c) cout<<"a="<&l
14、t;a<<endl; else cout<<"b="<<b<<endl; cout<<"c="<<c<<endl; return 0; 2. cpp view plaincopyprint?1. #include <iostream> 2. using namespace std; 3. int main() 4. 5.
15、0; int x=1,a=0,b=0; 6. switch (x) 7. 8. case 0: a+; break; 9. c
16、ase 1: b+; 10. case 2: a+; b+; break; 11. case 3: a+; b+; 12. 13. cout<<
17、"a="<<a<<",b="<<b<<endl; 14. return 0; 15. #include <iostream>using namespace std;int main() int x=1,a=0,b=0; switch (x) case 0: a+; break; case 1: b+; case 2: a+; b+; break; case 3: a+;
18、b+; cout<<"a="<<a<<",b="<<b<<endl; return 0;3.cpp view plaincopyprint?1. #include <iostream> 2. using namespace std; 3. int main ( ) 4. 5.
19、; int i , j, s=0; 6. for (i=1; i<=4; i+) 7. 8. for( j=1; j<=i; j+) 9.
20、0; s=s+1; 10. 11. cout<<”s=”<<s<<endl; 12. return 0; 13. #include <iostream>using n
21、amespace std; int main ( ) int i , j, s=0;for (i=1; i<=4; i+)for( j=1; j<=i; j+)s=s+1;cout<<”s=”<<s<<endl;return 0;4. cpp view plaincopyprint?1. #include <iostream> 2. using namespace std; 3. int main() 4. 5. int number=1024,digit; 6. do 7.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年生態(tài)旅游可持續(xù)發(fā)展規(guī)劃與管理旅游目的地生態(tài)旅游發(fā)展規(guī)劃報(bào)告
- 智能電網(wǎng)在2025年能源行業(yè)中的應(yīng)用與產(chǎn)業(yè)生態(tài)構(gòu)建報(bào)告
- 智能設(shè)備配對(duì)管理制度
- 大公司工廠績(jī)效管理制度
- 印刷廠安全生產(chǎn)管理制度
- 婦產(chǎn)科儀器設(shè)備管理制度
- 護(hù)理制度流程化管理制度
- 客服辦公室設(shè)備管理制度
- 春季魚(yú)塘開(kāi)口管理制度
- 產(chǎn)品銷售群規(guī)定管理制度
- 塑膠跑道標(biāo)線施工方案
- 《大學(xué)生心理健康教育》(第三版)課程標(biāo)準(zhǔn)
- 車輛購(gòu)置的可行性研究報(bào)告
- 南京市既有建筑改造施工圖設(shè)計(jì)審查指南(建筑與設(shè)備專業(yè))(試行)2025
- 物流調(diào)度述職報(bào)告
- 康復(fù)護(hù)理行走障礙指導(dǎo)步行訓(xùn)練課件
- 鋼結(jié)構(gòu)用高強(qiáng)度大六角頭螺栓連接副知識(shí)培訓(xùn)
- 2025年語(yǔ)文素養(yǎng)“詩(shī)詞大會(huì)”知識(shí)競(jìng)賽題庫(kù)及答案
- 《智能網(wǎng)聯(lián)汽車用數(shù)據(jù)分發(fā)服務(wù)(DDS)測(cè)試方法》
- 《花的話完整》課件
- 《上海市溫室氣體排放核算與報(bào)告指南(試行)》(SHMRV-001-2024)文
評(píng)論
0/150
提交評(píng)論