• 读《Android深度探索(卷1)HAL与驱动开发》的一些思考10


     打印内核调试信息: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。

  • 相关阅读:
    css-博客样式初体验
    CSS-3D动画笔记
    Postman-断言
    CSS-2D动画笔记
    CSS-服务器端字体笔记
    CSS-宽度自适应和浏览器兼容笔记
    CSS-图片整合笔记
    CSS-锚点笔记
    Html-元素类型笔记
    Scrapy爬虫大战京东商城
  • 原文地址:https://www.cnblogs.com/limomo/p/5620860.html
Copyright © 2020-2023  润新知