目前在kernel驱动代码中,都不再建议直接使用printk直接添加打印信息,而是使用dev_info,dev_dbg,dev_err之类的函数代替,虽然这些dev_xxx函数的本质还是使用printk打印的,但是相比起printk: 支持打印模块信息、dev信息 支持动态调试(dynamic debug)方式 下面简述下这几个dev_xxx函数的基本使用规则,
另外还有这个 kernel-4.4/include/linux/netdevice.h #if defined(CONFIG_DYNAMIC_DEBUG) #definenetdev_dbg(__dev, format, args...) \ do { \ dynamic_netdev_dbg(__dev, format, ##args); \ } while (0) #elif defined(DEBUG) #define netdev_dbg(__dev, format, args...) \ netdev_printk...
kernel的source code中有很多使用pr_debug/dev_dbg输出的日志信息(例如device tree解析的代码,drivers/of/fdt.c)。默认情况下,kernel不会将这些日志输出到控制台上,除非: 1)开启了DEBUG宏,并且 2)kernel printk的默认日志级别大于7 看似简单,不过我相信每个人都问过这样的问题(不管是问自己还是问别人,特别是在调...
今天终于将dev_dbg信息输出了,为了以后方便查找,特记录下来: 1、修改缺省信息的宏定义级别(kernel\include\linux\printk.h文件内): /* printk's without a loglevel use this.. */#define MESSAGE_LOGLEVEL_DEFAULT CONFIG_MESSAGE_LOGLEVEL_DEFAULT/* We show everything that is MORE important than this.. ...
#include <linux/device.h> #include <linux/mutex.h> 第二步(这一步笔者认为可选): 在make menuconfig配置CONFIG_CONSOLE_LOGLEVEL_DEFAULT这个选项的值为8 Location: -> Kernel hacking -> printk and dmesg options 注意内核版本为4.14
是否有一种最简单的方法可以启用 linux 内核驱动程序 dev_dbg 调试消息(实际上是 trace 样式消息),希望不会弄乱内核补丁/重新编译或驱动程序实现额外的东西像 debugfs ?也许有一种方法可以在内核中启用一些简单的东西(比如一个标志?)触发特定驱动程序或所有驱动程序 dev_dbg(它可以使用 `dmesg|grep “driverName”...
上面是打开动态输出语句的例子,除了能输出pr_debug()/dev_dbg()函数中定义的输出外,还能输出一些额外信息,例如函数名、行号、模块名字和线程ID等。 p:打开动态打印语句。 f:打印函数名。 l:打印行号。 m:打印模块名字。 t:打印线程ID。 2.2在内核启动参数设置 ...
目前在kernel驱动代码中,都不再建议直接使用printk直接添加打印信息,而是使用dev_info,dev_dbg,dev_err之类的函数代替,虽然这些dev_xxx函数的本质还是使用printk打印的,但是相比起printk: 支持打印模块信息、dev信息 支持动态调试(dynamic debug)方式 下面简述下这几个dev_xxx函数的基本使用规则,以及动态调试使用方式。
#include <linux/device.h> #include <linux/mutex.h> 第二步(这一步笔者认为可选): 在make menuconfig配置CONFIG_CONSOLE_LOGLEVEL_DEFAULT这个选项的值为8 Location: -> Kernel hacking -> printk and dmesg options 注意内核版本为4.14
# echo -n '*usb* +p' > /sys/kernel/debug/dynamic_debug/control 打开系统所有的动态输出语句 # echo -n '+p' > /sys/kernel/debug/dynamic_debug/control 上面是打开动态输出语句的例子,除了能输出pr_debug()/dev_dbg()函数中定义的输出信息外,还能输出一些额外信息,如函数名、行号、模块名字以及线程...