驱动中pr_debug定义在kernel/include/linux/printk.h
/* If you are writing a driver, please usedev_dbg instead */
#if defined(CONFIG_DYNAMIC_DEBUG)
/* dynamic_pr_debug() uses pr_fmt()internally so we don't need it here */
#define pr_debug(fmt, ...) \
dynamic_pr_debug(fmt,##__VA_ARGS__)
#elif defined(DEBUG)
#define pr_debug(fmt, ...) \
printk(KERN_DEBUGpr_fmt(fmt), ##__VA_ARGS__)
#else
#define pr_debug(fmt, ...) \
no_printk(KERN_DEBUGpr_fmt(fmt), ##__VA_ARGS__)
#endif
在makefile文件里添加ccflag+y =--DDEBUG
或者专门宏控制
ccflag+$(CONFIG_AUDIO_CODEC) =--DDEBUG
能够打开所有log,可是对于android多个文件来说log太多导致系统分析不方便,为了便于打开须要模块的log,我在须要打开log的文件里对define进行又一次定义.
#ifdef pr_debug
#undef pr_debug
#define pr_debug(fmt, ...) \
printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#else
#define pr_debug(fmt, ...) \
printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
#endif
这样就方便调试源码中相应的log了,避免逐个打开的工作量.