在一个公用的头文件里面放入
#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可以灵活的的控制打印的数目;