C语言程序调试介绍

上传人:ll****x 文档编号:243022523 上传时间:2024-09-14 格式:PPT 页数:20 大小:232KB
返回 下载 相关 举报
C语言程序调试介绍_第1页
第1页 / 共20页
C语言程序调试介绍_第2页
第2页 / 共20页
C语言程序调试介绍_第3页
第3页 / 共20页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,千锋3G嵌入式移动互联网技术研发中心,程序调试技巧,1,内容摘要,常见错误分类,常见错误识别,内存泄露,调试器介绍,打印程序日志,良好的编程习惯,先进的开发方法,2,常见错误分类,语法错误,原因:程序书写不符合c语法规则,发生时间:编译或链接时,除错难度:容易,严重程度:非常严重,示例:括号对齐,遗露分隔符,函数名书写错误,隐式类型转换错误,3,常见错误分类,识别技巧1,现象:“未定义的标识符”,“重定义标识符”,“未找到标识符”,“函数隐式声明”,问题:1. 未定义变量,2. 变量使用时写错名字,3. 在一个作用域内重新定义了变量,4. 没有包含头文件,4,常见错误分类,识别技巧2,现象:“未找到符号”,原因:使用了库函数,链接时没有加上所在的库,解决办法: -lpthread -lm ,识别技巧3,现象:“未找到程序结尾”,“期望 或 ; “,原因:丢了分隔符,括号匹配() , ,5,常见错误分类,识别技巧4,现象:“不能把类型转换成类型”,原因:函数调用时,参数类型不对,识别技巧5,现象:各种莫名其妙,可能原因:1.源代码中有非法字符或不可见符号,2.宏定义可能有问题,3.检查注释,4.源文件编码格式,6,常见错误分类,编译器第一个步骤:词法分析和语法分析,建立符号表,内部符号:声明时填入符号表,使用时查找,外部符号:链接时查找,7,常见错误分类,语义错误,原因:语法正确但没有准确表达开发者的意图,发生时间:运行时,除错难度:较难,严重程度:严重,示例: if(i=0) /* if(i=0),访问空指针,野指针,访问没有正确打开的资源,死循环,数组下标越界,8,常见错误分类,识别技巧6,现象:程序崩溃,提示“段错误”,“找不到”,识别技巧7,现象:选择分支没起作用或死循环,解决办法:调试,9,常见错误分类,逻辑错误,原因:编程思路有误或方法考虑不周密,发生时间:程序结束,除错难度:很难,严重程序:严重,现象:运行结果与预期不一致,分析技巧:调试跟踪算法,对于死循环,看循环判断条件,10,内存泄露,原因:没有释放动态分配的内存或其它资源,发生时间:随时,除错难度:超难,识别技巧:无,测试办法:使用专用测试工具,推荐方法:尝试使用专用代码扫描工具,常用解决办法:无,11,调试器介绍,帮助程序员发现隐藏错误,帮助阅读理解代码:大工程,oo,GDB(Gnu 除错器),结合IDE(eclipse)演示,单机调试,在线调试,多进程多线程调试,12,调试器介绍,GDB使用,gcc -g -o hello hello.c /*elf 文件格式*/,gdb hello,start arg1 arg2 arg 3,step(s) 单步进入,next(n) 单步跳过,finish 运行到函数结尾,continue(c) 继续执行,直到断点,symbol 从一个文件内部加载符号,13,调试器介绍,print expression 打印表达式的值,set variable = expression 修改变量值,display expression 每次程序停下来后都显示值,undisplay取消上一次显示设置,14,调试器介绍,backtrace显示栈桢,程序崩溃时看调用栈,info args显示当前栈桢上参数,info locals 显示当前栈桢上局部变量,list 显示源代码,list linenum,list 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可能为空,严格的缩进与对齐,合理的划分函数功能,有利于定位出错点,适当的注释:说明各个部分功能,利于别人调试,18,优秀的开发方法,迭代渐进的思想,大量减少bug,消除大bug,19,其他问题?,20,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!