断言:利用ASSERT宏定位软件bug

来源:互联网 发布:360卸载软件 编辑:程序博客网 时间:2024/05/17 07:29
/*     *Author  : DavidLin            *Date    : 2014-12-26pm            *Email   : linpeng1577@163.com or linpeng1577@gmail.com            *world   : the city of SZ, in China            *Ver     : 000.000.001            *For     : Assert for debug!         *history :     editor      time            do            *          1)LinPeng       2014-12-26      created this file!            *          2)            */ 
/* assert_self.h */#ifndef  __ASSERT_SELF_H__#define  __ASSERT_SELF_H__#include<stdio.h>#define    ASSERT_ENABLE    (1)#define    xprintf    printf  /* xprintf can be tty print or uart print, etc */#if  ASSERT_ENABLE#define assert_error()  \    do \    {  \       xprintf("[ERROR] Assert FILE: %s: LINE %d\n", __FILE__, __LINE__);  \     }while(0)#define    ASSERT1(para)  \    do \    {  \       if(!para)  \       {  \          assert_error();  \       }  \    }while(0)  \#else  /* if ! ASSERT_ENABLE */ #define    ASSERT1(para)  \    do \    {  \       if(para)  \       {  \       }  \    }while(0)   #endif  /* end of ASSERT_ENABLE */#endif  /* end of __ASSERT_SELF_H__*/

测试用例

/* test case : test.c */#include<stdio.h>#include"assert_self.h"  int main(int argc, char* argv[]){    switch(argc)    {case 2:    ASSERT1(atoi(argv[1]));    break;default:    printf("ARG ACCEPT 1\n");    break;    }    exit(0);}
        软件Bug定位,很多时候,比如利用Assert宏,可以把48小时的调试大餐压缩成1口可以吃掉的饭后甜点,每个软件小组都在重新演化,过去的经验总是得不到很好的传承,这就是我们!

        转载请注明出处Linpeng1577的技术博客,谢谢!

        http://blog.csdn.net/linpeng12358


0 0