软件系统的稳定性、易维护特性、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);

日志

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

你可能感兴趣的:(cpp,windows)