目前在kernel驱动代码中,都不再建议直接使用printk直接添加打印信息,而是使用dev_info,dev_dbg,dev_err之类的函数代替,虽然这些dev_xxx函数的本质还是使用printk打印的,但是相比起printk: 支持打印模块信息、dev信息 支持动态调试(dynamic debug)方式 下面简述下这几个dev_xxx函数的基本使用规则,以及动态调试使用方式。
有很多驱动代码使用pr_debug/dev_dbg输出的日志信息。默认情况下,kernel不会将这些日志输出到控制台上,dmesg 命令是看不到这个这些消息的,比如dev_dbg定义如下: kernel-4.4/include/linux/printk.h /* pr_devel() should produce zero code unless DEBUG is defined */ 如果没有#define DEBUG #ifdef DEBUG #de...
2、在要输出dev_dbg信息的*.c文件的最前面添加: #define DEBUG 1 因为dev_dbg的宏定义在kernel\include\linux\device.h,而这文件通常被其它文件引用,在本BSP内被kernel/include/linux/platform_device.h引用,因此必须在引用这头文件之前定义DEBUG。
nodev /sys/kernel/debug debugfs defaults 0 0 可以用cat /sys/kernel/debug/dynamic_debug/control | grep xxx.c来查看自己想要查看的log所在文件有没有包含进去。 这里可以看到该文件所有用dev_dbg()打印出的讯息。 那如果不开启CONFIG_DYNAMIC_DEBUG,将不会产生/sys/kernel/debug/dynamic_debug目录, 是不能...
dev_dbg(struct device * dev, const char * fmt, ...) { return 0; } #endif 但是这个打开了之后,也不能顺利的输出信息,原因是printk有默认的信息级别。 linux/kernel文件中 #define KERN_EMERG "<0>" /* system is unusable */ #define KERN_ALERT "<1>" /* action must be taken immediately ...
linux内核打开dev dbg 在Linux系统中,内核开发人员经常需要对设备进行调试和跟踪。为了方便调试工作,Linux内核开发团队引入了/dev/dbg接口,用于提供对设备的调试功能。通过/dev/dbg接口,开发人员可以方便地观察设备的运行状态,诊断设备的问题,并进行调试工作。
kernel的source code中有很多使用pr_debug/dev_dbg输出的日志信息(例如device tree解析的代码,drivers/of/fdt.c)。默认情况下,kernel不会将这些日志输出到控制台上,除非: 1)开启了DEBUG宏,并且 2)kernel printk的默认日志级别大于7 看似简单,不过我相信每个人都问过这样的问题(不管是问自己还是问别人,特别是在调...
是否有一种最简单的方法可以启用 linux 内核驱动程序 dev_dbg 调试消息(实际上是 trace 样式消息),希望不会弄乱内核补丁/重新编译或驱动程序实现额外的东西像 debugfs ?也许有一种方法可以在内核中启用一些简单的东西(比如一个标志?)触发特定驱动程序或所有驱动程序 dev_dbg(它可以使用 `dmesg|grep “driverName”...
目前在kernel驱动代码中,都不再建议直接使用printk直接添加打印信息,而是使用dev_info,dev_dbg,dev_err之类的函数代替,虽然这些dev_xxx函数的本质还是使用printk打印的,但是相比起printk: 支持打印模块信息、dev信息 支持动态调试(dynamic debug)方式 下面简述下这几个dev_xxx函数的基本使用规则,以及动态调试使用方式。
dev_dbg(struct device * dev, const char * fmt, ...) { return 0; } #endif 但是这个打开了之后,也不能顺利的输出信息,原因是printk有默认的信息级别。 linux/kernel文件中 #define KERN_EMERG "<0>" #define KERN_ALERT "<1>" #define KERN_CRIT "<2>" ...