我是靠谱客的博主 迅速斑马,最近开发中收集的这篇文章主要介绍第十章 嵌入式Linux的调试技术,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1)printk函数的用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间。也就是说,像Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息。

2)Printk函数至少要有1个参数,如果格式字符串中包含有占位符,后面必须跟与占位符相等数量的参数,以便一一传入Printk

函数。

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

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

4)虽然使用Printk函数可以很方便地将消息写入日志文件或控制台。但大量使用Printk函数频繁操作日志文件或控制台设备文件会严重影响Linux驱动的性能,因此,这就要求Linux驱动只在开发阶段使用Printk函数输出消息,在正式发布Linux驱动时将可能影响性能的Printk函数去掉。最好的方法无疑是利用C语言中的编译指令。

5)Printk函数在控制台显示消息是通过/dev/console设备文件实现的。该设备文件只在字符界面的控制台下才起作用,所以Printk函数只有用在字符界面的控制台上才能正常输出消息。

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

7)在Linux驱动程序中可以使用内核函数在/proc目录中创建和删除虚拟文件,也可以建立和删除虚拟目录。

8)gdb可以 跟踪调试用户空间的程序。尽管一般不会直接使用gdb命令在手机、开发板或模拟器上调试程序,但这些调试命令仍然可以用于gdbserver远程调试。

9)由于gdb_debug是基于ARM处理器的可执行程序,因此需要使用专门用于调试基于ARM处理器的程序的调试器,而且最好使用哪个版本编译的程序,就使用与之对应版本的调试器,虽然gdb_debug是在Android模拟机上运行的,但在Linux终端执行调试器时仍然需要指定gdb_debug。

10)kgdb除了提供类似Printk函数的日志输出功能,还允许开发人员直接在PC上通过GDB链接目标设备。

11)Kgdb包含:Kgdb内核和一套连接接口。这些接口目前支持串口tty设备连接和以太网连接。其中串口链接需要通过内核参数kgdboc指定要连接的串口tty设备;以太网连接通过内核参数kgdboe指定IP和端口号。

 

转载于:https://www.cnblogs.com/wl12/p/5652187.html

最后

以上就是迅速斑马为你收集整理的第十章 嵌入式Linux的调试技术的全部内容,希望文章能够帮你解决第十章 嵌入式Linux的调试技术所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部