程序调试与常见程序错误.doc

程序调试与常见程序错误.doc

ID:59142073

大小:442.00 KB

页数:19页

时间:2020-09-11

程序调试与常见程序错误.doc_第1页
程序调试与常见程序错误.doc_第2页
程序调试与常见程序错误.doc_第3页
程序调试与常见程序错误.doc_第4页
程序调试与常见程序错误.doc_第5页
资源描述:

《程序调试与常见程序错误.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、程序调试与常见程序错误目录一、在Codeblocks中调试程序1二、存储路径设置问题4三、修改Codeblocks的设置4四、提示程序无法调试问题6五、常见错误分析6六、程序出错的三种情况18七、常用的纠错方式19一、在Codeblocks中调试程序1.注意事项不允许工程路径中含有空格、汉字。2.在相应行号后面点击鼠标左键设置断点3.打开WATCHS窗口4.点击调试按钮5.可以再watchs窗口看到自动变量。黄色三角表示程序暂停的位置6.通过单步运行按钮进行单步运行。7.也可以在debuger标签,command栏输入调试命令进行单

2、步运行、打印变量值等操作。8.程序运行二、存储路径设置问题1.如果不是默认安装路径,codeblocks就无法找到编译器和调试器,就会出现此类问题。解决办法:Settings——Compileranddebugger——Toolchainexecutables——Auto-detect。2.输出信息为“某个命令执行失败或异常终止”。解决方法:通常是相应的编译器找不到,试着将其所在路径放到path环境变量中去。3.输出编译错误,如某某文件找不到之类。解决方法:在项目中设置选项中加上路径(通常可利用customervariable项)。

3、4.在调试程序的时候弹出类似""XYZ-Debug":Thecompiler'ssetup(GNUGCCCompiler)isinvalid,soCode::Blockscannotfind/runthecompiler.Probablythetoolchainpathwithinthecompileroptionsisnotsetupcorrectly?!Goto"Settings->Compileranddebugger...->Globalcompilersettings->GNUGCCCompiler->Toolchaine

4、xecutables"andfixthecompiler'ssetup.Skipping...Nothingtobedone(allitemsareup-to-date)."这种警告。解决方法:这个错误提示已经说得很清楚了,找不到编译器,到菜单Settings->Compileranddebugger...->Globalcompilersettings->GNUGCCCompiler->Toolchainexecutables下去修复编译选项前提是你已经装了gcc如过没装,就去下个包含mingw的codeblocks,(mingw

5、包含gcc编译器);三、修改Codeblocks的设置1.2.3.4.四、提示程序无法调试问题多次调试一个程序时出现"cannotopenoutputfilmD:c++文件名.exePermissiondenied"解决方法:启动任务管理器,找到文件.exe关闭就可以了。五、常见错误分析1.忘记定义变量。例如:main( )  {x=3;y=6;printf("%d ",x+y);}C要求对程序中用到的每一个变量都必须定义其类型,上面程序中没有对x、y进行定义。应在函数体的开头加int x,y;这是学过BASIC和FORTR

6、AN语言的读者写C程序时常见的一个错误。在BASIC语言中,可以不必先定义变量类型就可直接使用。在FORTRAN中,未经定义类型的变量按隐含的I-N规则决定其类型,而C语言则要求对用到的每一个变量都要在本函数中定义(除非已定义为外部变量)。1.输入输出的数据的类型与所用格式说明符不一样。例如:若a已定义为整型,b已定义为实型。a=3;b=4.5;printf("%f %d",a,b);编译时不给出出错信息,但运行结果将与原意不符,输出为0. 16402它们并不是按照赋值的规则进行转换(如把4.5转换成4),而是将数据在存储单元中

7、的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节中的数据按%d,作为整数输出)。2.未注意int型数据的数值范围。例如:一般微型计算机上使用的C编译系统,对一个整型数据分配两个字节。因此一个整数的范围为-215~215-1,即-32768~32767。常见这样的程序段:intnum; num=89101;  printf("%d",num);得到的却是23565,原因是89101已超过32767。两个字节容纳不下89101,则将高位截去。即将超过低16位的数截去。即将89101减去216(即16位二进制所形成的模)。8

8、9101-65536=23565。有时还会出现负数。例如num=;输出得-1。因为的二进制形式为00000000000000101111111111111111去掉高位10,低16位的值是-1(-1的补码是:11111)。  对于超过

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。