您的位置:首页 > 其它

debug 输出log控制

2016-12-19 20:30 218 查看
/*简单打印调试信息*/
#define     DEBUG_SWITCH        1
#ifdef      DEBUG_SWITCH
#define my_debug(fmt,args...) printf(fmt, ##args)
#else
#define my_debug(fmt,args...) /*do nothing */
#endif

/*错误信息打印:自动打印发生错误时代码所在的位置*/
#define   ERR_DEBUG_SWITCH        1
#ifdef    ERR_DEBUG_SWITCH
#define pr_err(fmt,args...) printf("\nFile:<%s> Fun:[%s] Line:%d\n "fmt, __FILE__, __FUNCTION__, __LINE__, ##args)
#else
#define pr_err(fmt,args...) /*do nothing */
#endif

/*断言: 对某种假设条件进行检查0/1(若条件成立则无动作,否则报告错误信息)*/
#define _EXAM_ASSERT_TEST_        1
#define _EXAM_ASSERT_EXIT_        1
#ifdef  _EXAM_ASSERT_TEST_
void exam_assert(int condition, const char * file_name, const char *fun, unsigned int line_no, const char *fmt, ...)
{
char sBuf[1024];
va_list va;

if (!condition)
{
bzero(sBuf, sizeof(sBuf));
va_start(va, fmt);
vsprintf(sBuf, fmt, va);

printf("\n[EXAM]Assert failed: File:<%s> Fun:[%s] Line:%d\n %s", file_name, fun, line_no, sBuf);
#ifdef _EXAM_ASSERT_EXIT_
abort();
#endif
}
}
#define EXAM_ASSERT(condition, fmt, args...)    exam_assert(condition, __FILE__, __FUNCTION__, __LINE__,fmt, ##args)
#else // 若不使用断言测试
#define EXAM_ASSERT(condition, fmt, args...) NULL
#endif /* end of ASSERT */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: