摘要
本文主要阐述软件设计中,可调试性设计的必要性和重要性以及可实施措施
软件设计,尤其是大规模软件设计,要从系统架构设计之初就将可调试性设计纳入其中。其重要性有两个方面。一是功能方面,加入可调试性设计有助于发现、定位问题;二是性能方面,有助于在系统高负荷、大容量运行情况下,发现系统资源消耗情况。当然如果既有功能方面的问题,又有性能方面的问题,那就是性功能方面的问题了,本文不予阐述。
设计的要素主要包括两个方面,一是错误/告警/提示等信息;二是统计信息。前者主要是用在功能方面,比如,设定不同级别打印或者输出日志;后者主要用在性能分析,举个例子,加入有一款代理软件proxy,一个链接出现问题,那么处理流程中需要设计恰当的错误/告警/提示等信息;但是如果1个,100个,10000个链接都正常,当1000,000个链接时出现问题,怎么办?这个时候,就需要统计信息了。
统计信息一定要准确,否则没有意义。
错误/告警/提示等信息要适可而止,no news is good news。看到很多人写如此代码,并且信誓旦旦说是给测试人员看,以此证明自己是对的:
int func(int a, int b)
{
printf("Entering %s/n", __FUNCTION__);
/* do something */
printf("Leaving %s/n", __FUNCTION__);
}
是在是可怜,调试代码用得着这样?
没事别乱 发言,有事别闷声!