第四章--调试技术
来源:互联网 发布:单片机的类型 编辑:程序博客网 时间:2024/04/29 18:59
一、打印调试
linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用
printk(KERN_DEBUG )来输出打印信息。要打开这个开关需要下面两步。
1.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>
点击(此处)折叠或打开
- #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
linux/kernel文件中
点击(此处)折叠或打开
- #define KERN_EMERG "<0>"
- #define KERN_ALERT "<1>"
- #define KERN_CRIT "<2>"
- #define KERN_ERR "<3>"
- #define KERN_WARNING "<4>"
- #define KERN_NOTICE "<5>"
- #define KERN_INFO "<6>"
- #define KERN_DEBUG "<7>"
1.2、修改文件kernel/printk文件
点击(此处)折叠或打开
- #define DEFAULT_MESSAGE_LOGLEVEL 4
- #define MINIMUM_CONSOLE_LOGLEVEL 1
- #define DEFAULT_CONSOLE_LOGLEVEL 8
原来该值为7,则调试信息无法输出,修改为8则全部有输出。
1.3、修改Makefile
通过配置内核选项,修改Makefile实现显示打印调试信息。Kconfig内容如下:
点击(此处)折叠或打开
- config ADC_DEV_DEBUG
- bool "adc dev debugging messages"
- depends on ADC_INTF_DEV
- help
- Say Y here if you want the adc dev to produce a bunch of debug
- messages to the system log. Select thisif you are having a
- problem with adc core and want to see more of what is going on.
点击(此处)折叠或打开
- #
- # Makefile for the i2c bus drivers.
- #
- obj-$(CONFIG_GSC_SPI0_ADC_CORE) += adc-core.o
- obj-$(CONFIG_ADC_INTF_DEV) += adc-dev.o
- obj-$(CONFIG_ADC_INTF_PROC) += adc-proc.o
- obj-$(CONFIG_ADC_INTF_SYSFS) += adc-sysfs.o
- obj-$(CONFIG_GSC3280_ADC) += gsc3280_adc.o
- ccflags-$(CONFIG_GSC_ADC_DEV_DEBUG)+= -DGSC3280_ADC_DEV_DEBUG
GSC3280_ADC_DEV_DEBUG宏定义的调试语句将被打印。
0 0
- 第四章调试技术
- 第四章:调试技术
- 第四章--调试技术
- 调试技术(第四章 )
- 【Linux 驱动】第四章 调试技术
- 《Linux Device Drivers》第四章 调试技术——note
- 第四章 Servlet技术
- 第四章 深入JSP技术
- 第四章-网络路由技术
- 第四章 计算机软件安装与调试
- 第四章 JSP技术(书摘)
- 第四章 JSP技术(书摘)
- 第四章:刷机技术&资源篇
- 第四章 模式识别-非参数技术
- 网安--第四章 网络安全攻击技术
- [技术讨论]中国软件工程技术应用调查报告第四章
- [技术讨论]中国软件工程技术应用调查报告第四章
- 调试技术
- 两个线程交替执行
- cas服务器时间不同步导致两台服务器
- android中UI设计里面常会用到的style和theme。
- map key char*
- SVN常用命令
- 第四章--调试技术
- POJ2249 Binomial Showdown
- 叠片过滤器对比传统过滤器的优势说明
- vim 重命名
- centos 下安装git
- 第五章--并发和竞态
- jquery form 加载数据
- svn无法预料的错误
- Unity发布android在小米2/2A闪退的原因之一