zoukankan      html  css  js  c++  java
  • 第十章

    打印内核调试信息:printk:

    该函数的用法与printf函数类似,不过printk函数运行在内核空间,printf函数运自行在用户空间。也就是说,像Linux驱动这样Linux内核程序只能使用printk函数输出也试信息。printk 函数在printk.c文件中实现。

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

    虽然使用printk函数可以很方便地将消息写入日志文件或控制台。但大量使用printk函数频繁操作日志文件或控制台设备文件(dev/console)会严重影响Linux驱动的性能(因为写磁盘的速度远没有读写内存的速度快),因此,这就要求Linux驱动只在开发阶段使用printk函数输出消息,在正式友布Linux驱动时将可能影响性能的printk函数去掉。

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

    在Linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc文件系统的行为方式与设备文件系统 (/dev)类似。/proc是虚拟文件系统,也就是说了/proc并不是真正的文件系统,而是内存映射。所有读写/proc的操作都是对内存的读写。所以读写/proc文件系统的速度要远比读写/dev文件系统的速度快。因此,/proc文件系统也可作为 Linux 驱动与用户空间程序交互的工具。

    用kgdb远程调试内核程序:

    大多数内核开发人员认为kgdb是最好的内核调试工具。Kgdb除了提供类似printk函数的日志输出功能,还允许开发人员直接在PC上通过GDB链接目标设备。

    Kgdb包含了两部分:kgdb内核和一套连接接口。 这些接口目前支持串口tty设备连接和以太网连接。其中串口连接需要通过内核参数kgdboc指定要连接的串口tty设备;以太网连接通过内核参数kgdboe指定IP和端口号。kgdb支持多种处理器架构,例如,X86、ARM 等。 由于这些处理器架构差异很大,所以kgdb单独为每个支持的处理器架构实现了kgdb 内核,如ARM架构的kgdb内核源代码文件是arch/arm/kemel/kgdb.c。

    要想用kgdb调试Linux内核,首先需要配置Linux内核。使用make menuconfig命令进入Linux内核的配置菜单。进入“Kernel hacking”,找到并选中“KGDB: kernel debugger”菜单项。

    使用kgdb调试Linux内核首先需要配置内核参数,这些参数通知Linux内核要如何进行调试。

  • 相关阅读:
    利用idea的code inspect功能进行代码静态分析
    AntiSamy测试
    常用git命令
    node 常用命令
    java中byte[] 和16进制字符串互转
    使用idea的条件断点快速定位注解的处理类
    使用数组初始化list
    django连接Mysql数据库
    20分钟快速用django+mysql+pycharm搭建一个自己的web网站学习笔记
    随便谈谈------关于django学习笔记
  • 原文地址:https://www.cnblogs.com/homwok/p/5644670.html
Copyright © 2011-2022 走看看