您的位置:首页 > 运维架构 > Linux

linux打印级别控制原理

2012-10-12 23:24 330 查看
在一个公用的头文件里面放入

#define RT_DEBUG_ERROR 1

#define RT_DEBUG_WARN 2

#define RT_DEBUG_TRACE 3

#define RT_DEBUG_INFO 4

unsigned long RTDebugLevel = RT_DEBUG_ERROR

#ifdef DBG

#define DBGPRINT_RAW(Level, Fmt) \

do{ \

if (Level <= RTDebugLevel) \

{ \

printk Fmt; \

} \

}while(0)

#define DBGPRINT(Level, Fmt) DBGPRINT_RAW(Level, Fmt)

#define DBGPRINT_ERR(Fmt) \

{ \

printk("ERROR!!! "); \

printk Fmt; \

}

#define DBGPRINT_S(Status, Fmt) \

{ \

printk Fmt; \

}

#else

#define DBGPRINT(Level, Fmt)

#define DBGPRINT_RAW(Level, Fmt)

#define DBGPRINT_S(Status, Fmt)

#define DBGPRINT_ERR(Fmt)

#endif

包含此头文件

就可以使用类似:DBGPRINT(RT_DEBUG_TRACE, ("you want print %s:%d\n", str,num));

此时需要设置RTDebugLevel为RT_DEBUG_TRACE(3)或者RT_DEBUG_INFO (4)才会有打印出现,RT_DEBUG_ERROR(1)、RT_DEBUG_WARN (2)级别都低于RT_DEBUG_TRACE(3)所以如果RTDebugLevel设置为它们则级别不够无法打印!

实际使用中系统中会有很多不同级别的打印消息,通过修改RTDebugLevel的值就可以改变级别,从而控制打印输出的数量,方便调试;

当然实际情况中并不是所有的宏定义都在一个头文件中,只有开始的四个级别是公用的,RTDebugLevel则是以全局变量的形式出现的,需要引用时使用extern就ok了,通过宏定义DBG还有修改RTDebugLevel可以灵活的的控制打印的数目;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: