linux打印级别控制原理

在一个公用的头文件里面放入

#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可以灵活的的控制打印的数目;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值