1 / 3
文档名称:

调试技巧.pdf

格式:pdf   页数:3页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

调试技巧.pdf

上传人:drp539603 2015/10/3 文件大小:0 KB

下载得到文件列表

调试技巧.pdf

相关文档

文档介绍

文档介绍:outline
™ 错误类型
排错技巧™ 整体上减少错误的方法
™ 便于调试的代码风格
™ 排错
™ VC调试技巧
银平 ™ 建议
错误类型整体上减少错误的方法
™ 编译错误™ 减少程序各个部分之间的关联
™ 逻辑错误 Z程序的复杂性与各部件间可能互相作用的途
Z程序运行结果不对径数目有关
™ 异常错误 Z方法:信息隐蔽、抽象和界面(很多语言有
这方面的支持)
Z指针异常
Z内存分配异常™ 使用错误较少的语言
Z除0异常 Z比如,取消指针,取消goto
Z…… Z没有任何语言能够防止你犯错误!!
便于调试的代码风格排错
™ 排错心理准备
™ 尽量不用全局变量™ 易重现错误
™ 所有变量都要初始化,成员变量在构造函数™ 不可重现错误
中初始化
™ 尽量使用const
™ 详尽的注释
1
排错(1):心理准备排错(2):错误定位
™ 不要把所有的判断交给编译器和调试器,应该在程
™ 排错的时间至少跟写程序一样长序中自己加以程序保护和错误定位
™ 发现错误能够防止类似的错误再发生 Z参数检查,返回值检查
使用异常机制
因此最好自己发现错误,这样记忆比较牢固 Z
Z Z使用调试输出
Z多做笔记#define PR(x) cout<<#x”=”<<x<<'\n‘
Z日志输出
™ 不要去怀疑编译器和库函数™ Log4cplus
/forum/?forum_id=351392
Z虽然编译器和库函数可能有bug,但是出现™ log4j
bug的可能性极其极其小
排错(3):易重现错误排错(4):不可重现错误(1)
™ 简单的排错步骤™ 检查日志和调试输出,确定大概出错位置
Z使用排错系统取得堆栈轨迹和几个变量的值™ 检查变量是否都初始化
Z发现出错的位置™ 很可能是存储分配错误
Z比如char* msg(){char c[10];...,return c;}
Z多数是一些低级错误(如i,j搞混了)
Z比如for(p=listp;p!=NULL;p=p->next)free(p);
Z记录一些常犯错误,对照检查 Z比如int c[10],a=0; c[--a]=1;
Z读程序,而不是马上去改程序™ 当程序出现不可理解的异常时,多半是某个地方有
内存越界
Z前面赋值 a=5,后面却发现a的值不为5
不可重现错误(2) VC调试技巧
™ 使用函数时注意™ 编译选项
Z不要使用还没有完全了解输入要求和输出结 Z高警

最近更新

企业技术秘密保护与竞业限制服务合同 3页

企业标志设计专业服务合同 3页

企业融资居间服务标准协议书 2页

2025年度文化产品海外销售出口代理合同3篇 43页

企业财务顾问与财务顾问服务合同778 2页

企业资产担保合同范本 2页

企业间技术秘密保护保密协议起草与执行 3页

企事业单位安保与资料管理综合服务合同-@-1 3页

企事业单位短期流动资金借款协议 2页

企事业单位通勤车租赁合同 3页

休闲农庄场摊位租赁及旅游服务合同 3页

优质车床租赁合作协议 3页

住宅小区单项工程承包施工协议书 3页

2025年度市政基础设施居间代理合同3篇 45页

2025年度工程款抵扣工程竣工备案协议3篇 39页

体育公园场地租赁分成合同 3页

2025年度工地车辆租赁及租赁期限及合同解除合.. 36页

2025年度工地施工废弃物运输处理合同3篇 43页

体育训练基地场地租赁服务合同 3页

体育赛事举办无限连带责任担保合同 3页

体育赛事组织与运营咨询顾问服务合同 3页

供应链担保服务合同终止协议书标准范本 3页

供应链金融担保借款合同 2页

便利店加盟合同中关于加盟店合同违约金与赔偿.. 3页

2025年度工伤事故保险理赔及服务合同3篇 39页

2025年度岁以上劳动者职业发展援助与就业指导.. 25页

保姆带小孩与家庭饮食管理服务合同 3页

保安行业劳动保障合同汇编 3页

2025年度就业创业孵化平台合作协议范例:创新.. 39页

保密协议带供应链信息重点条款分析 2页