版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序调试技巧1内容摘要常见错误分类常见错误识别内存泄露调试器介绍打印程序日志良好的编程习惯先进的开发方法2常见错误分类语法错误原因:程序书写不符合c语法规则发生时间:编译或链接时除错难度:容易严重程度:非常严重示例:括号对齐,遗露分隔符,函数名书写错误,隐式类型转换错误3常见错误分类识别技巧1现象:“未定义的标识符”“重定义标识符”“未找到标识符”“函数隐式声明”问题:1. 未定义变量2. 变量使用时写错名字3. 在一个作用域内重新定义了变量4. 没有包含头文件4常见错误分类识别技巧2现象:“未找到符号”原因:使用了库函数,链接时没有加上所在的库解决办法: -lpthread -lm 识别技巧
2、3现象:“未找到程序结尾”“期望 或 ; “原因:丢了分隔符括号匹配() , 5常见错误分类识别技巧4现象:“不能把类型转换成类型”原因:函数调用时,参数类型不对识别技巧5现象:各种莫名其妙可能原因:1.源代码中有非法字符或不可见符号 2.宏定义可能有问题 3.检查注释 4.源文件编码格式6常见错误分类编译器第一个步骤:词法分析和语法分析建立符号表内部符号:声明时填入符号表,使用时查找外部符号:链接时查找7常见错误分类语义错误原因:语法正确但没有准确表达开发者的意图发生时间:运行时除错难度:较难严重程度:严重示例: if(i=0) /* if(i=0) 访问空指针,野指针 访问没有正确打开的资
3、源 死循环 数组下标越界8常见错误分类识别技巧6现象:程序崩溃,提示“段错误”,“找不到”识别技巧7现象:选择分支没起作用或死循环解决办法:调试9常见错误分类逻辑错误原因:编程思路有误或方法考虑不周密发生时间:程序结束除错难度:很难严重程序:严重现象:运行结果与预期不一致分析技巧:调试跟踪算法对于死循环,看循环判断条件10内存泄露原因:没有释放动态分配的内存或其它资源发生时间:随时除错难度:超难识别技巧:无测试办法:使用专用测试工具推荐方法:尝试使用专用代码扫描工具常用解决办法:无11调试器介绍帮助程序员发现隐藏错误帮助阅读理解代码:大工程,ooGDB(Gnu 除错器)结合IDE(eclips
4、e)演示单机调试在线调试多进程多线程调试12调试器介绍GDB使用gcc -g -o hello hello.c /*elf 文件格式*/gdb hellostart arg1 arg2 arg 3step(s) 单步进入next(n) 单步跳过finish 运行到函数结尾continue(c) 继续执行,直到断点symbol 从一个文件内部加载符号13调试器介绍print expression 打印表达式的值 set variable = expression 修改变量值display expression 每次程序停下来后都显示值undisplay取消上一次显示设置14调试器介绍backtr
5、ace显示栈桢,程序崩溃时看调用栈info args显示当前栈桢上参数info locals 显示当前栈桢上局部变量list 显示源代码list linenumlist function 15调试器介绍info break 查看断点的信息break funtion 在函数入口下断点break linenumber 在当前文件某行下断点break 在文件某行下断点disable breaknum 使不能某个断点enable breaknum 使能某个断点commands breaknum 当到某个断点时执行一个命令16打印日志最简单 最笨 用处最广泛大型工程项目所必须的内容在程序里用宏控制日志,打印出关键的变量值if(DEBUG)printf(“.”多线程环境下可能会失效举例:多线程竞争17良好编程习惯帮助我们规避bug, 消除风险空指针判断指针定义时和不用时置空数组下标使用前,判断是否越界总是显式的进行类型转换严格的括号匹配 if(a0) & (a10) 在程序的各个出口处 free(p); 尽管p可能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论