资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,关于,C,语言程 序的,调 试,前言:,C,语言程序的调试主要是为了排除程序的逻辑错误,在程序运行的结果与预期的结果不一致的情况下进行。,C,语言程序调试的手段有多种:,1.,最简单的一种是”,单步调试,”,使用”,step over”,.,一步一步地执行,.,可,在“变量窗口”,(Variables),观察和分析变量的变化。,2.,使用 设置,(,或取消,),断点,再使用 运行到断点,.,可在“变量窗口”,(Variables),观察和分析变量的变化。,然后决定是继续单步执行,还是运行到下一个断点。,C+6.0,的界面窗口如下:,3.,运行到光标处:先定位好光标的位置,再使用,(run to cursor),运行 到光标处。,然后决定是继续单步执行,还是运行到下一个断点。,输出窗口,工作窗口,编辑窗口,可在菜单栏空白处右击,.,选择要显示的窗口和工具条。,调试工具条的显示,:,方法:,使用右键,:,在菜单栏空白处右击,.,调试程序示例,1:,计算分段函数,:,1/x x,0,f(x)=,0 x=0,#include,void main(),float x,y;,printf(input x:n);,scanf(%f,x),if(x!=0),y=1/x;,else,y=0;,printf(f(%.2f)=%.1fn,x,y);,注,:,在进行调试前,首先要正常通过编译和连接,排除所有语法错误,.,点击此按钮进行编译,.,1.“,输出窗口”显示出错信息说明及大致行数,.,3.,黑色箭头指示错误的大致位置,.,2.,双击某行错误信息,.,一,.,单步调试,:,主要是解决程序的逻辑错误,:,运行结果与期望值不一致,.,开始单步调试,:,单击”单步执行”,(Step Over(F10),变量窗口,.,显示或隐藏变量窗口,.,显示或隐藏观察窗口,.,观察,(wacth),窗口,.,可以输入变量和表达式,观察它们的值,.,当运行到输入语句时,任务标上会出现小图标,.,点击之,.,在输入窗口输入数据,.,2.,停止调试,:,单击”终止调试”,(Stop Debuging),终止调试,.,二,.,设置断点调试,:,调试程序示例,2:,计算累加和,程序有错。,#include,void main(),int i,sum;,for(i=1;i=100;i+),sum=sum+i;,printf(sum=%dn,sum);,排除语法错误,运行后发现其结果显然不对。,如下图所示,设置一断点。,使用此按钮,运行到断点处,.,在变量窗口发现,sum,的值有问题!,这时应想到是变量没赋初值,。,注:如果程序代码多,可设多个断点,。,调试程序示例,2:,输入一个,510,之间的整数,n,求,:1!+2!+.n!.,#include,void main(),int n=0,i=1,s,k=1;,printf(,请输入,5-10,之间任意数,:n);,scanf(%d,while(in),s+=k;,i+;,k*=i;,printf(1!+2!+.%d!=%dn,n,s);,三,.,运行到光标处,:,排除语法错误,运行后发现其结果显然不对。,先定位好光标。,1.,使用此按钮,(run to cursor),,,运行到光标处,.,2.,输入数据后,,运行到光标处,.,使用单步调试,一步一步执行。,同时观察变量的变化。,说明:,1.,可以使用”单步”,”,断点”,”,运行到光标处”等手段互相 组合来进行,.,2.,在调试时,也可利用”监视窗口”,输入变量或表达式,观察其值的变化,.,输入变量或表达式,同时观察其值的变化。,调试示例,:,求二数的最小公倍数和最大公约数,.,#include,void main(),int m,n,j,k;,printf(input m,n:n);,scanf(%d%d,while(m0&n0),;,j=m;,while(j/n!=0),j=j+m;,k=(m*n)/j;,printf(,最小公倍数是,%dn,最大公约数是,%dn,j,k);,Input m n:3 7,(,回车,),首先排除所有语法错误后,运行程序,:,输出结果,:,最小公倍数是,:3,最大公约数,:7,答案不对,!,调试方法,:,1.,首先要排除语法错误,.,点击此按钮进行编译,.,当排除所有语法错误后,进行下步操作,:,(,在光标所在行,),点击此图标设断点,(,再点击即取消,).,根据需要可以设置多个断点,.,调试开始,:,点击此图标,(GO),运行到断点处,.,中间有一输入语句,输入数据,:-3 7,程序运行到第一个断点,.,在”变量窗口”观察到,:m=-3,n=7.,再次点击此图标,(GO),运行到第二个断点处,.,在”变量窗口”观察到,:m=-3,n=7.,在此处发现问题,.,什么问题,?,是因为数据输入不对,!,程序要求不允许输入负数,二个数必需为正数,否则程序不能往下走,.,单击”终止调试”,(Stop Debuging),终止调试,.,把循环条件,:,(,M0&n0),改为,:,(M0|n0),关闭工作区间,重新编译,设置二个断点,.,点击图标,(GO),运行,.,如输入,:-3 7.,再点击图标,(GO),程序不向下走,.,说明有问题:输入数据不对!,重新输入正确数据,:3 7 .,点击图标,(GO),运行到第二个断点,.,然后可以执行”单步调试”,运行到,printf(),处,.,发现,:j=3 k=7.,答案也不对,!,说明第二个断点后有问题,.,单击”终止调试”,(Stop Debuging),仔细分析,.,循环条件改为,(,j%n!=0),Input m n:3 7,(,回车,),重新运行程序,:,输出结果,:,最小公倍数是,:21,最大公约数,:1,C,语 言 程 序 调 试,结 束,
展开阅读全文