博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读《Android深度探索(卷1)HAL与驱动开发》的一些思考10
阅读量:4565 次
发布时间:2019-06-08

本文共 695 字,大约阅读时间需要 2 分钟。

 打印内核调试信息:printk

 printk 函数的原型如下:

 asmlinkage int printk(const char * fmt, ...)

printk文件是一个简单的有4 个数字组成的文本文件,该文件的默认.如下:

6    4    1    7

如果想修改printk 文件中的内容,要求任何信息都输出到控制台,可以在Linux 终端执行下面的命令。

#echo 8 > /proc/sys/kernel/printk

修改后的printk 文件的内容如下:

8    4    1    7

执行有如下的命令可以编译和安装printk_demo驱动。

# sh build.sh

防止printk函数降低Linux驱动性能:

修改上-节的printk_demo 驱动代码,通过编译指令定义了一个pr_debug宏,并通过修改编译指令的条件值来控制是否调用printk函数。

通过虚拟文件系统(/proc)进行数据交互:

在Linux 文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc文件系统的行为方式与设备文件系统(/dev )类似。/proc 是虚拟文件系统,也就是说,/proc 并不是真正的文件系统,而是内存映射。

调试工具:

用gdb 调试用户空间程序、用gdbserver 远程调试用户空间程序、用kgdb 远程调试内核程序。

当发现某段代码的bug太多,很难通过printk函数输出信息找出,可以考虑使用kgdb用step by step的方式定位bug。

转载于:https://www.cnblogs.com/limomo/p/5620860.html

你可能感兴趣的文章
RDLC报表钻取空白页问题
查看>>
OS X升级到10.10之后使用pod出现问题的解决方法
查看>>
多路电梯调度的思想
查看>>
jQuery-对Select的操作
查看>>
过滤器、监听器、拦截器的区别
查看>>
为什么要进行需求分析?通常对软件系统有哪些需求?
查看>>
Oracle RAC环境下ASM磁盘组扩容
查看>>
添加web引用和添加服务引用有什么区别?
查看>>
一些模板
查看>>
jquery和dom元素相互转换
查看>>
放大的X--HDOJ-201307292012
查看>>
题目831-签到-nyoj-20140818
查看>>
百词斩-斩家秘籍
查看>>
php反射
查看>>
hdu 1018 Big Number 数学结论
查看>>
【MUI】百度地图定位功能
查看>>
bzoj3687 简单题
查看>>
STL容器简介
查看>>
HashMap遍历的两种方式,推荐使用entrySet()
查看>>
如何在Android开发中测试应用在真机上实验
查看>>