在开发过程中,无可避免的会遇到printk打印信息的输出,在写新功能或BUG调试的时候我们想看到更多的调试信息,但版本发出后,我们想看到尽可能少的输出信息,那么怎么控制这个呢。。 下面的方法可以对输出进行控制:

 内核 DEBUG日志控制

#undefPRINTD

#undefPRINTDD

#ifdefFREE_DEBUGG

#definePRINTDD(nu,fmt,arg...) printk(KERN_DEBUG"free:"fmt,##arg)

#else

#definePRINTDD(nu,fmt,arg...)

#endif

 

#ifdef  FREE_DEBUG

#definePRINTD(nu,fmt,arg...) \

              do{ \

                            if(1 == nu) printk(KERN_DEBUG"free:"fmt,##arg); \

                            else if(2 == nu){ \

                                          PRINTDD(nu,fmt,##arg);\

                            }\

              }while(0)

#else

#define PRINTD(nu,fmt,arg...)

#endif

其中宏FREE_DEBUG是来控制所有的DEBUG是否输出

而宏FREE_DEBUGG是来控制部分部分的日志输出

使用方式:

比如想打印“”hello“”字符串,并且这个字符串即使在发布的版本中也想打印

那么  在Makefile中添加EXTRA_CFLAGS =  -DFREE_DEBUG 然后调用

PRINTD(1,”hello”);

如果这个字符串你想在调试的时候才输出,在发布版本中不想看到它, 那么就可以使用

PRINTD(2,”hello”)  在调试的时候打开宏 FREE_DEBUGG 在发布的时候关闭宏FREE_DEBUGG  这样就能对日志的输出进行控制了

相关文章: