打开 Linux的dev_dbg

内核中的大部分驱动都使用了dev_dbg接口打印调试信息,这些信息非常有用帮助你去调试理解代码,默认是不会输出到控制台的。基于Linux version 4.14.78
有两种方法让dev_dbg 输出:

/kernel/include/linux/device.h
#if defined(CONFIG_DYNAMIC_DEBUG)
#define dev_dbg(dev, format, ...)            \
do {                             \
    dynamic_dev_dbg(dev, format, ##__VA_ARGS__); \
} while (0)
#elif defined(DEBUG)
#define dev_dbg(dev, format, arg...)        \
    dev_printk(KERN_DEBUG, dev, format, ##arg)
#else
#define dev_dbg(dev, format, arg...)                \
({                              \
    if (0)                          \
        dev_printk(KERN_DEBUG, dev, format, ##arg); \
})
#endif

1.定义DEBUG宏:

在需要打印dev_dbg调试信息的驱动文件开头定义DEBUG宏, 注意必须是在<linux/device.h> 或者<linux /paltforam_device.h>前面定义.


image.png

2.打开动态调试功能:

CONFIG_DEBUG_FS=y
CONFIG_DYNAMIC_DEBUG=y
动态调试方法:

mount -t debugfs none /sys/kernel/debug                         路径也可以自己选择,这里用系统默认路径        
echo -n 'file xxx.c +p' > /data/debugfs/dynamic_debug/control  增加xxx.c文件dynamic debug的输出
echo -n 'file xxx.c -p' > /data/debugfs/dynamic_debug/control  去掉xxx.c文件dynamic debug的输出

3.调整显示级别:

CONFIG_CONSOLE_LOGLEVEL_DEFAULT=10
查看:
cat /proc/sys/kernel/printk
10 4 1 10

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。