这一章讲的是Linux的各种调试技术
打印内核调试信息:printk
Printk函数的原型:
Asmlinkage int printk(const char *fmt,。。。。)printk函数既可以将日志信息写到日志文件,也可以将日志信息写到控制台。Printk文件是一个简单的由4个数字组成的文本文件,默认值为:6 4 1 7
6:强消息输出到控制台的级别,只有高于该级别的输出信息才会输出到控制台
4:默认的消息日志级别,如果不在
printk函数中指定日志级别,就会使用该值作为默认的级别
1:控制台日志级别可被设置的最小值(最高优先级别)
7:控制台日志级别的默认值
防止printk函数降低Linux驱动性能
大量使用printk函数频繁操作日志文件或控制台设备文件(/dev/console)会严重影响Linux驱动的性能,因此需要将printk函数去掉,最好的方法无疑是利用C语言中的编译指令
通过虚拟文件系统(/proc)进行数据交互
调试工具
用gdb调试用户空间程序
# gcc -static -g-ogdb_debug /root/drivers/debug/gdb_debug.c
用gdbserver远程调试用户空间程序
首先进入Android模拟器的终端然后进入data/local目录,并执行:# gdbserver:4321 ./gdb_debug
用kgdb远程调试内核程序
Kgdb包含俩部分:kgdb内核和一套链接接口。Kgdb支持多种处理器架构
http://i.cnblogs.com/EditPosts.aspx?opt=1