Android深度探索笔记-第十章
printk函数运行在内核发空间, printf函数运行在用户空间。
使用printk函数可以很方便地将消息写入日志文件或控制台,但大量使用printk函数操作日志文件或控制台设备文件会严重影响Linux驱动的性能,因此,这就要求Linux驱动只在开发阶段使用printk函数输出消息。Printk函数在控制台显示消息是通过/dev/console设备文件实现的,该设备文件只在字符界面的控制台下才起作用,所以printk函数只有用在字符界面的控制台上才能正常输出消息。
在Linux文件系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具。/proc是虚拟文件系统,所以读写/proc文件系统的速度要远比读写/dev文件系统的速度快。因此,/proc文件系统也可作为Linux驱动与用户空间程序交互的工具。在Linux驱动程序中可以使用内核函数在/proc目录中创建和删除虚拟文件,也可以建立和删除虚拟目录。/proc文件系统和/dev文件系统一样,也需要设置访问文件的动作处理函数,/dev文件系统通过file_operations.read和file_operations.write函数指针变量读写设备文件的读写动作处理函数。Proc_dir_entry结构体代表一个虚拟目录或文件。
Android模拟器只能通过端口映射方式使用gdbserver调试程序,但开发板除了可以通过IP连接到gdbserver外,还可以通过串口进行连接。
Kgdb 包含了两部分:kgdb 内核和一套连接接口。这些接口目前支持串口设备连接和以太网连接。
当发现某段代码的bug太多或很难通过printk输出信息找到,可以考虑使用kgdb
用step by Step的方式定位bug。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步