调试:用于程序开发时的系统行为修正,排除系统行为的缺陷,实现我们预期的功能
诊断:用于程序运行时的系统异常定位,判定系统对异常行为的响应,以便于采取措施实施治疗和规避
通常情况下,我们会在程序中就异常、错误情况进行处理,我们将错误信息记入日志,以便于进行跟踪和
判别。
调试问题:
1 打印模块错误,拷贝粘贴的结果
解决办法:不用手工输入
2 打印级别混乱 :
程序异常和处理错误不分开
解决办法:简化打印级别,分异常,错误,调试
3 打印缺失:很多地方只返回FALSE,但是无任何打印,有的不对返回值进行判断
解决办法:增加
4 不规范,存在个性化的打印
跟踪问题:
1 冗余打印:
2 信息却失
3 错误分支缺失
解决?
1 跟踪宏
2 为工程定制诊断日志
3 区分错误日志和跟踪日志
从标准的c++assert宏ASSERT,trace宏,
致命错误日志,向日志进程发送异常日志,控制程序的各种版本,在发生异常时,不允许中止服务器进程,
传统宏的功能:仅限于输入参数的检测
可定制更多宏在程序开发的早期捕获更多的错误,称为自诊断功能
分清楚非预期的错误和预期的错误,
调试宏集:
容易使用的函数和宏,语义清晰
错误报告发送至文件或调试控制台
宏可以关闭和打开,不影响正常程序的运行
调试宏可以透明的集成到源代码,可以在发布版本中删除,不能对程序有任何影响
依赖于条件定义,错误报告可以被利用,不管是调试版本和发布版本
调试宏的条件:
宏应该尽可能的报告错误信息,位置,模块,错误码,错误信息,最近的系统错误
在没有错误时,宏必须尽量减轻系统的负担,但有错误必须汇报
调试宏不能依赖于rtti,,某些系统不可用
调试宏必须允许多线程,多进程并发的向错误日志报告,由于致命错误较少,同步机制尽可能简单
当错误发生时的应用或DLL的版本号,

本文讨论了在程序开发中如何有效地进行调试和诊断,包括错误日志记录、调试宏的使用、断言的策略。建议区分错误日志和跟踪日志,自定义调试宏以提高错误定位效率,并提供了具体的宏定义示例,强调断言应用于检查代码中的bug,而错误处理用于处理预期的异常情况。

817

被折叠的 条评论
为什么被折叠?



