?? 檢出錯(cuò)誤.c
字號(hào):
檢出和分離c語言源程序錯(cuò)誤的方法
我們知道,編譯程序可以找到源程序中的語法錯(cuò)誤和語義錯(cuò)誤,并將其分離出來,但她不能檢出程序編制的是否得當(dāng)及算法是否正確。在c語言源程序調(diào)試過程中,比較麻煩的一種錯(cuò)誤是程序可以執(zhí)行,但得不到希望的結(jié)果,即使在算法正確的情況下,程序員也要從頭到尾的對(duì)整個(gè)程序檢查。找出錯(cuò)誤的方法可以從一組檢查數(shù)據(jù)開始,把已知的數(shù)據(jù)送入程序,并把程序逐步劃小,直到找出錯(cuò)誤所在并將其分離出來為止。這種方法大都采用在源程序中加入若干printf()語句來實(shí)現(xiàn),通過檢查中間結(jié)果,就可能把出錯(cuò)的原因找出來。但這種方法過于繁瑣復(fù)雜,使用不便。本文介紹一種解決這個(gè)問題的簡(jiǎn)單方法,以起拋磚引玉的作用。
首先設(shè)計(jì)一個(gè)排錯(cuò)函數(shù)debug(),這里假定編譯程序進(jìn)支持整型,字符型,整型數(shù)組和字符型數(shù)組類型。如果編譯程序還值持其它的數(shù)據(jù)類型,稍加修改debug()函數(shù)即可。debug()函數(shù)如下:
/* function to print ints,chars,and int&char arrays*/
#include<stdio.h>
#include<conio.h>
#define CLEARS 111
void debug(char let,char c_array[],int n_array[],int asize,int num,int opt)
{
int i;
switch(opt)
{
case 1:
printf("The value is %d",num);
break;
case 2:
printf("The letter is %c",let);
break;
case 3: {
puts("The number array contains\n");
for(i=0;i<=asize;++i)
printf("%d",n_array[i]);
break;
}
case 4:{
puts("The character array contains\n");
for(i=0;i<=asize;++i)
printf("%c",c_array[i]);
break;
}
default:
puts("\nInvalid option selected!");
break;
}
puts("\tPlease press any key to continue:");
getch();
}
void main()
{
int i,j,a[10];
char ch,b[10];
for(i=5,j=0;i<15;++i,++j){
a[j]=j;
b[j]=j;
}
putchar(CLEARS);
ch='a';
debug(0,0,0,0,i,1); /*display value of i*/
debug(ch,0,0,0,0,2);/*display value of ch*/
debug(0,0,a,10,0,3);/*display value of a*/
debug(0,b,0,10,0,4);/*display value of b*/
debug(0,0,0,0,0,7);/*error*/
}
關(guān)于此函數(shù)的幾點(diǎn)說明:
debug()函數(shù)提供一個(gè)在排錯(cuò)過程中把所需過程打印出來的方法,思想很簡(jiǎn)單,即把要打印的數(shù)據(jù)類型傳遞給它,并由后面的printf()語句將其打印出來,調(diào)用getch()函數(shù)引起程序暫停運(yùn)行,直到按任意鍵繼續(xù)。debug()參數(shù)包括了位是其工作所需內(nèi)容(根據(jù)需要還可添加其它有關(guān)的參數(shù))。opt是要使用的可選項(xiàng)。
實(shí)際應(yīng)用時(shí),把debug()函數(shù)包含進(jìn)你的程序,把錯(cuò)誤找出來后,可以很容易的把所有的debug()函數(shù)都清除出去。把所有這些調(diào)用和為包含函數(shù)debug()所用的#include從程序中撤銷是很容易的事。如vi編輯在“ex轉(zhuǎn)換方式”下使用的搜索并替換命令g和s),這些在源程序中使用printf()函數(shù)是很難辦到的。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -