首页 > 代码库 > 软件调试:利用断言ASSERT宏定位软件bug
软件调试:利用断言ASSERT宏定位软件bug
/* *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 : threads for rxtx! *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口可以吃掉的饭后甜点,每个软件小组都在重新演化,过去的经验总是得不到很好的传承,这就是我们!
软件调试:利用断言ASSERT宏定位软件bug
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。