999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語(yǔ)言程序調(diào)試常用技巧與常見錯(cuò)誤分析

2012-04-12 00:00:00高婷
消費(fèi)電子 2012年19期

摘要:在C語(yǔ)言程序的開發(fā)過程中經(jīng)常會(huì)伴隨著多次對(duì)C語(yǔ)言程序進(jìn)行修改調(diào)試的過程。本文討論了C語(yǔ)言程序調(diào)試中常用技巧,分析了調(diào)試中常見錯(cuò)誤,旨在促進(jìn)我們編寫出正確的程序,提高編程效率。

關(guān)鍵詞:C語(yǔ)言;程序調(diào)試;常用技巧;常見錯(cuò)誤

中圖分類號(hào):TP312.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-7712 (2012) 18-0032-01

當(dāng)我們完成了C語(yǔ)言程序的源程序的編寫之后,我們要使用C語(yǔ)言的編譯器將其翻譯成計(jì)算機(jī)能夠執(zhí)行的二進(jìn)制代碼形式的目標(biāo)程序,再通過連接,最終形成可執(zhí)行程序。但這個(gè)過程中可能會(huì)出現(xiàn)各類問題。比如編譯未通過,連接未通過,或是生成了可執(zhí)行程序,但并非我們的預(yù)期目標(biāo)。

所謂程序調(diào)試,是指對(duì)程序的查錯(cuò)和排錯(cuò)。調(diào)試程序一般應(yīng)經(jīng)過人工檢查,即靜態(tài)檢查;上機(jī)調(diào)試,即動(dòng)態(tài)檢查;運(yùn)行程序,試驗(yàn)數(shù)據(jù)及檢查和分析錯(cuò)誤原因等幾個(gè)步驟。

程序調(diào)試是一項(xiàng)細(xì)致深入的工作,需要下功夫、動(dòng)腦子、善于累積經(jīng)驗(yàn)。在程序調(diào)試過程中往往反映出一個(gè)人的水平、經(jīng)驗(yàn)和科學(xué)態(tài)度。上機(jī)調(diào)試程序的目的決不是為了“驗(yàn)證程序的正確性”,而是“掌握調(diào)試方法和技術(shù)”。

一、調(diào)試過程中的一些常用技巧

1.先簡(jiǎn)后繁。先用一組簡(jiǎn)單的數(shù)據(jù)對(duì)程序進(jìn)行測(cè)試,檢驗(yàn)各函數(shù)是否有出錯(cuò)現(xiàn)象,然后用復(fù)雜數(shù)據(jù)對(duì)程序進(jìn)行調(diào)試,直到確定程序?qū)φ?shù)據(jù)沒有錯(cuò)誤為止。

2.由大到小。出現(xiàn)錯(cuò)誤時(shí),要逐步縮小可能出現(xiàn)錯(cuò)誤的范圍,從整個(gè)程序到指定函數(shù),再到指定區(qū)域,再到指定行。在對(duì)程序縮小范圍或?qū)幾g沒通過的程序縮小錯(cuò)誤范圍時(shí)可以用發(fā)“/* */”來進(jìn)行調(diào)試,確定正常范圍,縮小錯(cuò)誤范圍。

3.單步調(diào)試。編輯完C語(yǔ)言源程序并保存后,右按F8鍵進(jìn)行主函數(shù)程序單步執(zhí)行,如果源程序無語(yǔ)法錯(cuò)誤,則每按一次F8鍵執(zhí)行一句主函數(shù)程序,同時(shí)可用Ctrl+F7組合鍵設(shè)置所要跟蹤的變量,以查看程序的執(zhí)行進(jìn)程,從而更容易查出程序的錯(cuò)誤。但是,F(xiàn)8鍵只能單步執(zhí)行主函數(shù)程序,它將調(diào)用非主函數(shù)視為一條語(yǔ)句執(zhí)行,并不能轉(zhuǎn)到被調(diào)函數(shù)的內(nèi)部進(jìn)行語(yǔ)句單步運(yùn)行,所以在有些程序出錯(cuò)時(shí),不能精確查出出錯(cuò)位置。因此,當(dāng)主函數(shù)調(diào)用其它函數(shù)時(shí),應(yīng)當(dāng)使用F7鍵,它能在F8鍵功能的基礎(chǔ)之上,進(jìn)一步深入到被調(diào)用函數(shù)內(nèi)部,從而真正做到程序單步執(zhí)行,即每按一次F7鍵,僅執(zhí)行一條語(yǔ)句,遇到函數(shù)調(diào)用就轉(zhuǎn)到被調(diào)用函數(shù)內(nèi)部執(zhí)行語(yǔ)句。當(dāng)使用F8或F7進(jìn)行單步調(diào)試時(shí),應(yīng)當(dāng)用Ctrl+F7進(jìn)行變量跟蹤。

4.設(shè)置斷點(diǎn)。斷點(diǎn)就是程序運(yùn)行中可能會(huì)中斷的地方,方便開發(fā)者在程序運(yùn)行的過程中查看程序當(dāng)前的運(yùn)行狀態(tài),比如變量的值、函數(shù)的返回值等等。F9用于在當(dāng)前光標(biāo)所在前行下斷點(diǎn),如果當(dāng)前行已經(jīng)有斷點(diǎn),則取消斷點(diǎn)。有的地方不能下斷點(diǎn),比如空行、基本類型定義語(yǔ)句(未初始化)等等非執(zhí)行語(yǔ)句。

二、常見錯(cuò)誤分析

在實(shí)際的C語(yǔ)言編程過程中可能會(huì)出現(xiàn)各種各樣的錯(cuò)誤。這其中可能有算法錯(cuò)誤,有因?yàn)閷?duì)C語(yǔ)言中的某些語(yǔ)法知識(shí)理解的不正確而產(chǎn)生的錯(cuò)誤,還有因?yàn)槭钀S大意而產(chǎn)生的程序的錄入錯(cuò)誤等等。這些錯(cuò)誤中,算法錯(cuò)誤必須經(jīng)過后期的試運(yùn)行和調(diào)試才能解決,而其他錯(cuò)誤是可以經(jīng)過訓(xùn)練能夠避免的。

(一)由于語(yǔ)法知識(shí)理解不正確而導(dǎo)致的錯(cuò)誤

這類錯(cuò)誤有時(shí)并不能被馬上發(fā)現(xiàn),因?yàn)橛行┣闆r下錯(cuò)誤會(huì)被編譯器識(shí)別并報(bào)錯(cuò),而有些卻不能被編譯器識(shí)別,但運(yùn)行結(jié)果卻和預(yù)計(jì)的情況不一致。以下是在這方面常見的一些出錯(cuò)的情況。

1.轉(zhuǎn)義字符的用法不當(dāng)。決不能用的字符是由單個(gè)字符組成,而轉(zhuǎn)義字符卻是很特殊的一類字符,它是以一個(gè)鍵盤符號(hào)反斜杠“\”開始后跟上單個(gè)字符或是若干個(gè)字符組成的,通常用來表示鍵盤上的控制代碼或特殊符號(hào),例如回車換行符、響鈴符號(hào)等。程序設(shè)計(jì)過程中有時(shí)不能正確地區(qū)分轉(zhuǎn)義字符和普通字符。

2.有符號(hào)型轉(zhuǎn)換成無符號(hào)型。在數(shù)據(jù)類型中,有時(shí)候會(huì)遇到將有符號(hào)的數(shù)據(jù)轉(zhuǎn)換成無符號(hào)的數(shù)據(jù)。要想解決這個(gè)問題,我們一定要明白數(shù)據(jù)在計(jì)算機(jī)中是如何存儲(chǔ)的。數(shù)據(jù)在機(jī)器中的存儲(chǔ)是以二進(jìn)制補(bǔ)碼形式存儲(chǔ),正數(shù)的符號(hào)“+”用二進(jìn)制0表示,而負(fù)數(shù)的符號(hào)“-”用1來表示,正數(shù)的原碼補(bǔ)碼相同,但是負(fù)數(shù)的補(bǔ)碼是其原碼的二進(jìn)制位取反加1。這樣來回轉(zhuǎn)換很麻煩,也容易搞錯(cuò)。

3.“%”的連續(xù)使用。在C語(yǔ)言中“%”作為格式描述字符用在輸入輸出語(yǔ)句中,當(dāng)我們需要將多個(gè) “%”一起作用時(shí)則應(yīng)特別注意。

4.break語(yǔ)句和continue語(yǔ)句。如果程序設(shè)計(jì)者搞不清楚break語(yǔ)句和continue語(yǔ)句,沒有真正理解兩者的含義,所以也容易犯錯(cuò)誤。這兩個(gè)語(yǔ)句都可以用在循環(huán)語(yǔ)句中,但兩者的作用不同。break語(yǔ)句主要的作用是用來跳出該循環(huán),提前結(jié)束循環(huán),接著執(zhí)行循環(huán)語(yǔ)句下面的語(yǔ)句;而continue語(yǔ)句主要作用是結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。

5.函數(shù)參數(shù)值傳遞。在函數(shù)參數(shù)傳遞的過程中,很多設(shè)計(jì)者很容易搞錯(cuò)實(shí)參在什么時(shí)候值不變,什么時(shí)候傳值后改變。

6.帶參宏定義的展開。C語(yǔ)言中帶參的宏定義雖然看上去很簡(jiǎn)單,如果沒有真正理解宏定義的話,在宏展開的時(shí)候很容易搞錯(cuò)。宏定義是通過#define開頭的編譯預(yù)處理命令來實(shí)現(xiàn),在調(diào)用宏的時(shí)候要進(jìn)行展開,并且再用實(shí)參去代換形參。

(二)錄入過程中常見的錯(cuò)誤

在源程序編輯過程中由于疏怱大意而產(chǎn)生的錄入錯(cuò)誤在所有的錯(cuò)誤中不在少數(shù),甚至占更大的比例,常見的錯(cuò)誤有誤把“=”作為“等于”比較符;使用自加(++)和自減(--)運(yùn)算符時(shí)出錯(cuò);混淆字符和字符串的表示形式;語(yǔ)句后面漏分號(hào);輸入輸出的數(shù)據(jù)的類型與所用格式說明符不一致;忘記定義變量;未注意int型數(shù)據(jù)的數(shù)值范圍;輸入時(shí)數(shù)據(jù)的組織與要求不符;在不該加分號(hào)的地方加了分號(hào);輸入變量時(shí)忘記使用地址符;括弧不配對(duì);switch語(yǔ)句的各分支中漏寫break語(yǔ)句;引用數(shù)組元素時(shí)誤用了圓括弧;對(duì)應(yīng)該有花括弧的復(fù)合語(yǔ)句,忘記加花括弧;在用標(biāo)識(shí)符時(shí),忘記了大寫字母和小寫字母的區(qū)別;在定義數(shù)組時(shí),將定義的“元素個(gè)數(shù)”誤認(rèn)為是“可使用的最大下標(biāo)值”;誤以為數(shù)組名代表數(shù)組中全部元素;對(duì)二維或多維數(shù)組的定義和引用的方法不對(duì);混淆字符數(shù)組與字符指針的區(qū)別;用指針變量之前沒有賦值;不同類型的指針混用;所調(diào)用函數(shù)在調(diào)用語(yǔ)句之后才定義,而又在調(diào)用前未加說明;將函數(shù)的形參和函數(shù)中的局部變量一起定義;函數(shù)的實(shí)參和形參類型不一致;沒有注意函數(shù)參數(shù)的求值順序;混淆數(shù)組名與指針變量的區(qū)別;誤認(rèn)為形參值的改變會(huì)影響實(shí)參的值;混淆結(jié)構(gòu)體類型與結(jié)構(gòu)體變量的區(qū)別,對(duì)一個(gè)結(jié)構(gòu)體類型賦值;使用文件時(shí)忘記打開,或打開方式與使用情況不匹配。

以上只是列舉了一些初學(xué)者常出現(xiàn)的錯(cuò)誤,這些錯(cuò)誤大多是由于對(duì)C語(yǔ)言的語(yǔ)法不熟悉造成的。對(duì)C語(yǔ)言使用多了,熟練了,錯(cuò)誤自然就會(huì)減少了。在深入使用C語(yǔ)言后,還會(huì)出現(xiàn)其他一些更深入、更隱蔽的錯(cuò)誤。

參考文獻(xiàn):

[1]韓京洋,向志強(qiáng).C語(yǔ)言調(diào)試技巧[J].電腦編程技巧與維護(hù),2012,16.

主站蜘蛛池模板: 男人的天堂久久精品激情| 久久福利片| 亚洲av综合网| 国产精品视频公开费视频| 亚洲人成影视在线观看| 国产丝袜啪啪| 天天色天天操综合网| 久久免费观看视频| 99热这里只有免费国产精品| 国产精品播放| 91精品国产福利| 91精品国产自产在线观看| 91福利在线观看视频| 色AV色 综合网站| 少妇人妻无码首页| 国产成人免费视频精品一区二区| 久久永久精品免费视频| 91精品国产自产在线老师啪l| 免费又爽又刺激高潮网址| 超薄丝袜足j国产在线视频| 欧美亚洲国产日韩电影在线| 91精选国产大片| 日韩天堂在线观看| 久久国产精品夜色| 成人综合网址| 国产美女无遮挡免费视频| 欧美天堂在线| 无码'专区第一页| 亚洲最新网址| 国产欧美日韩精品第二区| 日韩一区二区在线电影| 在线欧美国产| 久久精品国产免费观看频道| 国产精品手机在线观看你懂的| 青青青草国产| 亚洲第一黄片大全| 国产噜噜在线视频观看| 亚洲一区色| 国产精品无码AV片在线观看播放| 婷婷六月激情综合一区| 性69交片免费看| 特级精品毛片免费观看| 亚洲成人手机在线| 成人在线视频一区| 亚洲天堂首页| 国产97视频在线| 亚洲综合二区| 亚洲欧洲AV一区二区三区| 香蕉伊思人视频| 久久精品66| 最新国产午夜精品视频成人| 亚洲人妖在线| 在线观看国产精美视频| 无遮挡国产高潮视频免费观看| 国产一区二区福利| 亚洲国产成人在线| 制服丝袜 91视频| 国产一区二区三区在线观看免费| 国产精品免费久久久久影院无码| 日本在线视频免费| 一区二区影院| 国产精欧美一区二区三区| 99激情网| 国产精品部在线观看| 亚洲综合狠狠| 91色在线观看| 国产 日韩 欧美 第二页| 亚洲第一精品福利| 欧美日韩高清| 丰满的少妇人妻无码区| 福利在线一区| 亚洲无码精品在线播放| 国产不卡国语在线| Aⅴ无码专区在线观看| 国产亚洲精久久久久久无码AV| 婷婷99视频精品全部在线观看| 国产伦精品一区二区三区视频优播 | 欧美亚洲国产一区| 日韩高清一区 | 日韩国产黄色网站| 国产精品99久久久久久董美香| 中文字幕亚洲电影|