




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C C語(yǔ)言程序常見(jiàn)錯(cuò)誤與調(diào)試方法語(yǔ)言程序常見(jiàn)錯(cuò)誤與調(diào)試方法 C Programming(一)(一)C C語(yǔ)言程序常見(jiàn)錯(cuò)誤語(yǔ)言程序常見(jiàn)錯(cuò)誤 程序設(shè)計(jì)很少能夠沒(méi)有錯(cuò)誤的一次完成,在編程的過(guò)程中由于種種原因,總會(huì)出現(xiàn)這樣或那樣的錯(cuò)誤,這些程序的錯(cuò)誤也就是常說(shuō)的“Bug”,而檢測(cè)并修正這些錯(cuò)誤就是“Debug”(調(diào)試)。 程序錯(cuò)誤可分為三類(lèi):語(yǔ)法錯(cuò)誤、運(yùn)行錯(cuò)誤和邏輯錯(cuò)誤。C Programming1 1、語(yǔ)法錯(cuò)誤語(yǔ)法錯(cuò)誤 語(yǔ)法錯(cuò)誤是指那些由于編程中輸入不符合語(yǔ)法規(guī)則產(chǎn)生的錯(cuò)誤。 例如:表達(dá)式不完整、缺少必要的標(biāo)點(diǎn)符號(hào)、關(guān)鍵字輸入錯(cuò)誤、數(shù)據(jù)類(lèi)型不匹配、循環(huán)語(yǔ)句或選擇語(yǔ)句的關(guān)鍵字不配對(duì)等。 通常,編譯器對(duì)
2、程序進(jìn)行編譯的過(guò)程中,會(huì)把檢測(cè)到的語(yǔ)法錯(cuò)誤以提示的方式列舉出來(lái)。C Programming2 2、運(yùn)行錯(cuò)誤運(yùn)行錯(cuò)誤 運(yùn)行錯(cuò)誤是指程序在運(yùn)行過(guò)程中出現(xiàn)錯(cuò)誤。 例如:進(jìn)行除法運(yùn)算時(shí)除數(shù)為零、數(shù)組下標(biāo)越界、文件無(wú)法打開(kāi)等。 這類(lèi)錯(cuò)誤只出現(xiàn)在運(yùn)行過(guò)程中,在程序編譯時(shí)一般是無(wú)法發(fā)現(xiàn)的。C Programming3 3、邏輯錯(cuò)誤邏輯錯(cuò)誤 邏輯錯(cuò)誤是指程序運(yùn)行后,沒(méi)有得到預(yù)期的結(jié)果。這類(lèi)錯(cuò)誤從語(yǔ)法上來(lái)說(shuō)是有效的,但是程序邏輯上存在缺陷。 例如:使用了不正確的變量類(lèi)型、循環(huán)條件不正確、程序設(shè)計(jì)算法考慮不周等。 一般情況下,編譯器在編譯程序時(shí),不能檢查到程序的邏輯錯(cuò)誤,也不會(huì)產(chǎn)生邏輯錯(cuò)誤提示信息。C Progr
3、amming(二)語(yǔ)法錯(cuò)誤的分類(lèi)(二)語(yǔ)法錯(cuò)誤的分類(lèi) 語(yǔ)法錯(cuò)誤的調(diào)試,可以由集成開(kāi)發(fā)環(huán)境提供的調(diào)試功能來(lái)完成,在程序進(jìn)行編譯時(shí),編譯器會(huì)對(duì)程序中的語(yǔ)法錯(cuò)誤進(jìn)行診斷。 編譯診斷的語(yǔ)法錯(cuò)誤分為3類(lèi):致命錯(cuò)誤、錯(cuò)誤和警告。C Programming1 1、致命錯(cuò)誤致命錯(cuò)誤 “致命錯(cuò)誤”大多數(shù)是編譯程序內(nèi)部發(fā)生錯(cuò)誤。 發(fā)生這類(lèi)錯(cuò)誤時(shí),編譯被迫終止,只能重新啟動(dòng)編譯程序。幸運(yùn)的是,這類(lèi)錯(cuò)誤很少發(fā)生,但是為了安全,編譯前最好先保存程序。C Programming2 2、錯(cuò)誤錯(cuò)誤 “錯(cuò)誤”通常是在編譯時(shí),語(yǔ)法不當(dāng)所引起的,例如括號(hào)不匹配、變量為聲明等。 產(chǎn)生這類(lèi)錯(cuò)誤時(shí),編譯程序會(huì)出現(xiàn)報(bào)錯(cuò)提示,根據(jù)提示對(duì)源程
4、序進(jìn)行修改即可。這類(lèi)錯(cuò)誤是出現(xiàn)最頻繁的。C Programming3 3、警告警告 “警告”是指被編譯程序懷疑有錯(cuò),但不確定,有時(shí)可強(qiáng)行編譯通過(guò)。例如:主函數(shù)沒(méi)有返回值時(shí)沒(méi)有加void聲明、double型數(shù)據(jù)被轉(zhuǎn)換為float型數(shù)據(jù)等。 這些警告中,有些會(huì)導(dǎo)致錯(cuò)誤,有些則可以編譯通過(guò)。C Programming(三)(三)C C語(yǔ)言程序調(diào)試方法語(yǔ)言程序調(diào)試方法1 1、先進(jìn)行人工檢查,即、先進(jìn)行人工檢查,即靜態(tài)檢查靜態(tài)檢查。 在寫(xiě)好一個(gè)程序以后,不要匆匆忙忙上機(jī),而應(yīng)對(duì)程序進(jìn)行人工檢查。這一步十分重要,它能發(fā)現(xiàn)由于疏忽而造成的多數(shù)錯(cuò)誤。這一步往往容易被人忽視,總希望把一切都推給計(jì)算機(jī)去做,但這樣
5、會(huì)多占用機(jī)器時(shí)間,作為一個(gè)程序設(shè)計(jì)人員應(yīng)當(dāng)養(yǎng)成嚴(yán)謹(jǐn)?shù)淖黠L(fēng),每一步都要嚴(yán)格把關(guān),不把問(wèn)題留給后面的工序。C Programming(三)(三)C C語(yǔ)言程序調(diào)試方法語(yǔ)言程序調(diào)試方法 為了更有效地進(jìn)行人工檢查,所編的程序應(yīng)力求做到以下幾點(diǎn):1)應(yīng)當(dāng)采用結(jié)構(gòu)化程序方法編程,以增加可讀性;2)盡可能多加注釋?zhuān)詭椭斫饷慷纬绦虻淖饔茫?)在編寫(xiě)復(fù)雜的程序時(shí)不要將全部語(yǔ)句都寫(xiě)在main函數(shù)中,而要多利用函數(shù),用一個(gè)函數(shù)來(lái)實(shí)現(xiàn)一個(gè)單獨(dú)的功能。這樣便于分別檢查和處理。C Programming(三)(三)C C語(yǔ)言程序調(diào)試方法語(yǔ)言程序調(diào)試方法2 2、在人工檢查無(wú)誤后,再上機(jī)調(diào)試。即、在人工檢查無(wú)誤后,再上機(jī)
6、調(diào)試。即動(dòng)態(tài)檢查動(dòng)態(tài)檢查。 在編譯時(shí)會(huì)給出語(yǔ)法錯(cuò)誤的信息,調(diào)試時(shí)可以根據(jù)提示信息具體找出程序中出錯(cuò)之處并改正。應(yīng)當(dāng)注意的是有時(shí)提示出錯(cuò)的地方并不是真正出錯(cuò)的位置,如果在提示出錯(cuò)的行找不到錯(cuò)誤的話應(yīng)當(dāng)?shù)缴弦恍性僬摇S袝r(shí)提示出錯(cuò)的類(lèi)型并非絕對(duì)準(zhǔn)確,由于出錯(cuò)的情況繁多且各種錯(cuò)誤互有關(guān)聯(lián),因此要善于分析,找出真正的錯(cuò)誤,而不要只從字面意義上找出錯(cuò)信息,鉆牛角尖。C Programming(三)(三)C C語(yǔ)言程序調(diào)試方法語(yǔ)言程序調(diào)試方法3 3、對(duì)運(yùn)行結(jié)果作分析,看它是否符合要求。、對(duì)運(yùn)行結(jié)果作分析,看它是否符合要求。 有的初學(xué)者看到運(yùn)行結(jié)果就認(rèn)為沒(méi)問(wèn)題了,不作認(rèn)真分析,這是危險(xiǎn)的。 有時(shí),數(shù)據(jù)比較復(fù)雜
7、,難以立即判斷結(jié)果是否正確。可以事先考慮好一批“試驗(yàn)數(shù)據(jù)”,輸入這些數(shù)據(jù)可以很容易判斷結(jié)果正確與否。 事實(shí)上,當(dāng)程序復(fù)雜時(shí)很難把所有的可能情況全部都試到,選擇典型的臨界數(shù)據(jù)作試驗(yàn)即可。C Programming(三)(三)C C語(yǔ)言程序調(diào)試方法語(yǔ)言程序調(diào)試方法4 4、運(yùn)行結(jié)果不對(duì),大多屬于邏輯錯(cuò)誤。、運(yùn)行結(jié)果不對(duì),大多屬于邏輯錯(cuò)誤。 這類(lèi)錯(cuò)誤往往需要仔細(xì)檢查和分析才能發(fā)現(xiàn)。可以采用以下辦法:1)將程序與流程圖仔細(xì)對(duì)照,如果流程圖是正確的,程序?qū)戝e(cuò)了,是很容易發(fā)現(xiàn)的。例如,復(fù)合語(yǔ)句忘記寫(xiě)花括弧,只要一對(duì)照流程圖就能很快發(fā)現(xiàn)。C Programming(三)(三)C C語(yǔ)言程序調(diào)試方法語(yǔ)言程序調(diào)試方法2)如果實(shí)在找不到錯(cuò)誤,可以采用“分段檢查”的方法。逐段往下檢查,直到找到在某一段中數(shù)據(jù)不對(duì)為止。這時(shí)就已經(jīng)把錯(cuò)誤局限在這一段中了。不斷減小“查錯(cuò)區(qū)”,就能發(fā)現(xiàn)錯(cuò)誤所在。3)如果在程序中沒(méi)有發(fā)現(xiàn)問(wèn)題,就要檢查流程圖有無(wú)錯(cuò)誤,即算法有無(wú)問(wèn)題。有則改正之,接著修改程序。C Programming(三)(三)C C語(yǔ)言程序調(diào)試方法語(yǔ)言程序調(diào)試方法 總之,程序調(diào)試是一項(xiàng)深入細(xì)致的工作,需要下功夫,動(dòng)腦子,善于積累經(jīng)驗(yàn)。在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中介購(gòu)買(mǎi)合同正式合同范本
- 全職舞蹈老師合同范例
- 加盟分公司合同范本
- 加盟新鮮豬肉合同范本
- 2024年西安電力中心醫(yī)院招聘筆試真題
- 準(zhǔn)新車(chē)購(gòu)車(chē)合同范本
- 2024年空港數(shù)字城市開(kāi)發(fā)建設(shè)有限公司社會(huì)招聘考試真題
- 產(chǎn)權(quán)回購(gòu)合同范本
- 公司雇傭會(huì)計(jì)合同范例
- 買(mǎi)雞合同范本
- 語(yǔ)文教學(xué)設(shè)計(jì)(教案目標(biāo))
- 工程造價(jià)三級(jí)復(fù)核
- 中山大學(xué)抬頭信紙中山大學(xué)橫式便箋紙推薦信模板a
- 無(wú)形資產(chǎn)評(píng)估完整版課件
- 一體化學(xué)工服務(wù)平臺(tái)、人事管理系統(tǒng)、科研管理系統(tǒng)建設(shè)方案
- 市場(chǎng)營(yíng)銷(xiāo)學(xué)課后習(xí)題與答案
- 常暗之廂(7規(guī)則-簡(jiǎn)體修正)
- 10kV變電所設(shè)備檢修內(nèi)容與周期表
- 制冷系統(tǒng)方案的設(shè)計(jì)pptx課件
- 修心七要原文
- 中國(guó)TBHQ行業(yè)市場(chǎng)調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論