软件系统的稳定性、易维护特性、bug易调查...

本文分享了一位程序员从年轻时的轻视异常处理到重视全面性代码的经验转变,强调了在大型软件系统中,通过详尽的日志记录、合理使用assert及自定义中断来预防和快速定位bug的重要性。

目的

主要目标是让自己维护模块时省时省事。

起源

记得很多年前,那会自己感觉自己写的代码还行,年轻那会写程序感觉很少有bug,也不怎么判断异常分支,代码中很多假定了正确分支。
有一次做一个日本项目,跟日本人沟通,很简单一个功能,被日方反反复复打回,修改了七八次。初看有点小题大做(有的分支估计等到程序被废弃都不会执行进去),仔细分析的话,还是有道理的。
放到大型软件系统中的话,如何制定规则让所有人的代码都能考虑全面,把所有可能的bug萌芽都灭杀在详尽的日志信息中,方便bug调查,方便后期维护、扩展。

debug下的assert

debug版本程序中assert才会起作用,release版本assert会被忽略,不会被编译成执行代码,并不影响程序效率。
程序中可以考虑用尽量多的assert去判断各种可能出现的特殊情况,一旦release版本出现问题,需要调查,回到debug下直接运行,就可以最大可能快速定位到bug位置。但是assert会导致程序退出,不方便调试,可以考虑采用自定义中断。

debug、release下的自定义中断

#define DebugActive 0
#if DebugActive
#   define BreakHere __asm int 3
#   define BreakHereWhenFalse(x) if((x) == false) __asm int 3
#else
#   define BreakHere 
#   define BreakHereWhenFalse(x)
#endif

使用示例

BreakHere;
BreakHereWhenFalse(bTF);

日志

尽可能得在界面标红输出错误日志。
所有可能的问题都输出,促使问题爆发出来,推进问题的解决。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值