标签:
Linux驱动开发 -- 打开dev_dbg() 2012-10-23 19:21:54 分类: LINUX linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用printk(KERN_DEBUG )来输出打印信息。要打开这个开关需要下面两步。 1、打开调试开关:你调试的文件中必然包含了<linux/device.h>,或者<linux /paltforam_device.h>,后者包含了前者,在包含此头文件之前,使用#define DEBUG 1 来打开调试开关:例如 #include <linux/kernel.h> #include <linux/init.h> #include <linux/clk.h> #include <linux/module.h> #define DEBUG 1 #include <linux/platform_device.h> 在linux/device.h文件中: #define dev_printk(level, dev, format, arg...) \ printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg) #ifdef DEBUG #define dev_dbg(dev, format, arg...) \ dev_printk(KERN_DEBUG , dev , format , ## arg) #else static inline int __attribute__ ((format (printf, 2, 3))) dev_dbg(struct device * dev, const char * fmt, ...) { return 0; } #endif 但是这个打开了之后,也不能顺利的输出信息,原因是printk有默认的信息级别。 linux/kern_levels.h文件中 #define KERN_EMERG KERN_SOH "0" /* system is unusable */ #define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */ #define KERN_CRIT KERN_SOH "2" /* critical conditions */ #define KERN_ERR KERN_SOH "3" /* error conditions */ #define KERN_WARNING KERN_SOH "4" /* warning conditions */ #define KERN_NOTICE KERN_SOH "5" /* normal but significant condition */ #define KERN_INFO KERN_SOH "6" /* informational */ #define KERN_DEBUG KERN_SOH "7" /* debug-level messages */ #define KERN_DEFAULT KERN_SOH "d" /* the default kernel loglevel */ 可以看到KERN_DEBUG是级别最低的。 2、修改文件kernel/printk.h文件 #define console_loglevel (console_printk[0])
#define default_message_loglevel (console_printk[1])
#define minimum_console_loglevel (console_printk[2])
#define default_console_loglevel (console_printk[3])
其中 default_console_loglevel 为终端console输出的最低级别,比这严重的都将输出。原来该值为7,则调试信息无法输出,修改为0则全部有输出。
标签:
原文地址:http://www.cnblogs.com/x113/p/4468598.html