資源描述:
《vc++6.0環(huán)境下程序調(diào)試教程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、更多共享就在:http://hi.baidu.com/avbbtv/home,個人整理,沒有版權(quán),歡迎共享---avbbtv如何在VisualC++6.0環(huán)境下進行簡單的C語言程序調(diào)試桂林電子科技大學波仔303020983@163.com文章簡介本文主要介紹如何在VC6.0環(huán)境下進行簡單的C語言程序調(diào)試。作為閱讀本文的基礎,讀者應該熟悉如何在VC6.0環(huán)境下建立Win32ConsoleApplication(Win32控制臺程序)類型的工程。請結(jié)合文章給出的案例,按照文檔中的描述一步一步做。如果只是閱讀,則收效甚微。在做完文章給出的案例后,你應該嘗試著將文章中
2、介紹的知識和技巧應用到你實際開發(fā)的程序中。如果閱讀完一遍后,對調(diào)試基本概念還是不了解,建議你再多看幾遍。在介紹如何進行C語言程序調(diào)試(debugging)前,首先介紹程序調(diào)試的概念。調(diào)試(debug)一詞在計算機領域最早被提及,源于美國人AdmiralGraceHopper(葛麗絲·霍普、COBOL語言發(fā)明者、電腦科學家)。二十世紀四十年代(1940s)GraceHopper在哈佛大學為名為馬克2號(MarkII)的計算機(由IBM公司制造)編寫程序時,有一次在排除計算機故障時,發(fā)現(xiàn)一只飛蛾被夾在觸點原件之間,導致計算機無法運行。于是她詼諧的把計算機故障稱之為
3、“臭蟲(bug)”,把排除程序故障稱之為debug。從此之后,在計算機領域,程序調(diào)試或查找程序故障稱為debug。進行程序開發(fā)時,很多情況是程序通過編譯、鏈接(亦即不存在語法錯誤),但是在運行時往往得不到正確的結(jié)果(需要多組輸出數(shù)據(jù)進行測試)。這時往往意味著程序存在邏輯錯誤(與語法錯誤對應,通常是指程序所體現(xiàn)出的邏輯不符合開發(fā)者要求,或者是開發(fā)者本身對程序所要解決的某一問題的理解存在邏輯偏差),而查找邏輯錯誤的過程可稱之為程序調(diào)試。程序案例下面以一個程序案例為例,介紹如何在VC6.0下進行程序調(diào)試。案例:一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)”。例
4、如,6的因子為1,2,3,而6=1+2+3,因此是“完數(shù)”。編程序找出1000之內(nèi)的所有的完數(shù),并按下面的格式輸出其因子:6itsfactorsare1,2,3表1是某同學編寫的源程序。在VC6.0下建立Win32ConsoleApplication類型工程后,進行編譯鏈接的結(jié)果如圖1所示。對于表1中的程序功能,在其源代碼中相應注釋已給出說明。對于該源代碼編寫是否合理、簡潔,目前不做任何評論。表1求1000以內(nèi)所有的完數(shù)C源代碼#includemain(){intn,a,b,c,d,sum=0;for(a=0;a<=8;a++)//a表示一個
5、三位數(shù)中的百位{for(b=0;b<=8;b++)//b表示一個三位數(shù)中的十位{for(c=1;c<=8;c++)//c表示一個三位數(shù)中的個位{n=100*a+b*10+c;//n表示一個~1000以內(nèi)的數(shù)for(d=1;d6、;d++){if(n%d==0)printf("%d",d);}}}}}printf("");return0;}從圖1的編譯鏈接結(jié)果可知,該程序不存在語法錯誤。該程序的運行結(jié)果如圖2所示。從圖2及表1中的代碼可看出,程序運行后并沒有輸出1000以內(nèi)的所有完數(shù)及其因子。從而可知程序結(jié)果與開發(fā)者預期不一致(也就是說,程序存在邏輯錯誤),這時需要通過調(diào)試的手段來找出邏輯錯誤,并加以修改。圖1對程序源代碼編譯連接后的結(jié)果圖2程序的運行結(jié)果在進行程序調(diào)試時,通常需要在某一行代碼設置斷點。斷點可理解為中斷或暫停。當程序運行時,若遇到設置的斷點,則會在斷點所在的代碼行暫
7、停下來。其功能是使得開發(fā)者,在特定的某行代碼位置,查看程序運行的狀態(tài)(變量值、邏輯關(guān)系等)是否符合開發(fā)者的預期要求,從而找出程序邏輯錯誤所在。在介紹程序調(diào)試時,首先介紹如何在程序中插入斷點,如圖3所示。編譯微型欄最右邊一個工具按鈕為插入斷點(或刪除斷點)按鈕,每點擊該按鈕一次,則會在當前光標所在行中插入斷點(如果當前光標所在行存在斷點,則點擊該按鈕一次將會把已存在的斷點刪除)。如果某一行存在斷點,則該行最左端會有紅色圓點表示,如圖3所示。圖3在程序中插入斷點如何選擇在哪一行程序設置斷點,這需要開發(fā)者的經(jīng)驗和對程序邏輯錯誤表象的理解(亦即對程序運行結(jié)果不正確的判
8、斷)。一般原則是將斷點設置在可能存在邏