博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十章、嵌入式Linux的调试技术
阅读量:5034 次
发布时间:2019-06-12

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

通过对本章节的学习我学到了如下知识点:

嵌入式Linux调用技术

(1)调试方法:设置断点、逐步跟踪代码、输出调试信息。

(2)打印内核调试信息:printk,printk函数运行在内核空间,printk函数运行在用户空间,Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息。 Asmlinkage int printk(const char *fmt, …)第一个参数表示格式字符串,后面是可变参数。 虽然使用printk函数可以很方便的将纤细写入日志文件或控制台,但是大量使用printk函数频繁操作日志文件或控制台设备文件会严重影响Linux驱动的性能。防止printk函数降低Linux驱动的性能

(3)通过虚拟文件系统进行数据交互。在Linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc并不是真正的文件系统,而是映射内存。所有读写/proc的操作都是对内存的读写,所以读写/proc文件系统的速度要远比读写/dev文件系统的速度快。因此,/proc文件系统也可以作为Linux驱动与用户空间程序交互的工具。有很多系统信息就是通过/proc文件系统由内核空间的程序向外界提供的。/proc文件系统和/dev文件系统一样,也需要设置访问文件的动作处理函数。

(4)Android模拟器只能通过端口映射的方式使用kgdbserver调试程序。但开发板除了可以通过ip连接到kgdbserver外还可以通过串口进行连接。开发板同样也带了kgdbserver程序,可直接运行。

(5)调试工具: 用gdb 调试用户空间程序、用gdbserver 远程调试用户空间程序、用kgdb 远程调试内核程序。 当发现某段代码的bug太多,很难通过printk函数输出信息找出,可以考虑使用kgdb用step by step的方式定位bug。

       name:虚拟文件名称

       mode:虚拟文件的访问权限,等同于Linux问价访问权限。

       base:虚拟文件父目录的proc_dir_entry结构体指针。    

       read_proc:处理读动作的函数指针。

data:用于虚拟文件系统的数据。该值就是proc_dir_entry.read_proc函数的最后一个参数值

remove_proc_entry

       name:要删除的虚拟文件的名称

       parent:虚拟文件父目录的proc_dir_entry结构体指针。

转载于:https://www.cnblogs.com/liang123456/p/5640137.html

你可能感兴趣的文章
下拉框比较符
查看>>
2.2.5 因子的使用
查看>>
css选择器
查看>>
photoplus
查看>>
Python 拓展之推导式
查看>>
[Leetcode] DP-- 474. Ones and Zeroes
查看>>
80X86寄存器详解<转载>
查看>>
c# aop讲解
查看>>
iterable与iterator
查看>>
返回顶部(动画)
查看>>
webpack+react+antd 单页面应用实例
查看>>
Confluence 6 SQL Server 数据库驱动修改
查看>>
Confluence 6 通过 SSL 或 HTTPS 运行 - 备注和问题解决
查看>>
【47.76%】【Round #380B】Spotlights
查看>>
Git(使用码云)
查看>>
分享Java web 开发必游之路
查看>>
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题(转载)
查看>>
Bean的Scope
查看>>
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>