第十章 嵌入式linux的调试技术
《Android深度探索》第十章讲的是嵌入式Linux的调试技术。对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行测试。 printk函数的用法和printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间。也就是说,像Linux驱动这 样的Linux内核程序只能使用printk函数输出调试信息。在Linux文件系统中,/proc经常用来作为内核空间和用户空间进行数据交互的工具。 /proc文件系统的行为方式和设备文件系统(/dev)类似。/proc是虚拟文件系统,也就是说/proc并不是真正的文件系统,而是内存映射。所有 读写/proc的操作都是对内存的读写。所以读写/proc文件系统要远比读写/dev文件系统的速度快。因此,/proc文件系统也可作为Linux驱 动与用户空间程序交互的工具。测试用户空间程序的gdb、gdbserver工具和调试内核空间的kgdb工具。Gdb可以跟踪调试用户空间的程序。 List命令3种调用方式:list;list -;list n。
通过对第十章的学习,我知道了Linux内核调试非常困难,大多数人宁愿直接使用printk函数输出调试信息,也不愿意使用各种命令进行调试。通过学习 嵌入式Linux的调试技术,在调试时可根据实际情况决定使用其中的一种或几种。当发现某段代码的bug太多或很难通过printk函数输出信息找出,可 以考虑使用kgdb用step by step的方式定位bug。灵活使用这些调试技术才是调试的根本。这些经验需要不断从实践中领悟。
转载于:https://www.cnblogs.com/menmenda/p/5654401.html
第十章 嵌入式linux的调试技术相关推荐
- Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术
Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点,逐步跟踪代码. ...
- 嵌入式linux的调试技术
本章介绍了嵌入式linux的调试技术,例如,设置断点.逐步跟踪代码.输出调试信息等. Printk函数用于打印内核调试信息,运行在内核空间,printf函数运行在用户空间.Printk文件是一个简单的 ...
- 第10章 嵌入式linux的调试技术
一. 防止函数printk降低linux性能: 利用C语言中的编译指令(#if.#else.#endif等). 现在修改printk_demo驱动代码,通过编译指令定义了一个pr_debug ...
- linux内核调试技术 kprobe使用与实现
Linux kprobes调试技术是内核开发者们专门为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术.利用kprobes技术,内核开发人员可以在内核的绝大多数指定函数中动态的插入探测点来收集 ...
- 嵌入式linux实时化技术,嵌入式Linux实时化技术
引言 Linux支持PowerPC.MIPS.ARM.DSP等多种嵌入式处理器,逐渐被用于多种关键性场合.其中实时多媒体处理.工业控制.汽车电子等特定应用对Linux提出了强实时性需求.Linux提供 ...
- Linux安全增强技术,采用MAC技术的嵌入式Linux安全增强技术研究.pdf
采用MAC技术的嵌入式Linux安全增强技术研究.pdf Practical Method .实践方法 采用 MAC 技术的 嵌入式 Linux 安全增强技术研究 吴新勇 1 杨霞2 (1.四川九於1 ...
- 32位ARM嵌入式处理器的调试技术
32位ARM嵌入式处理器的调试技术 https://blog.csdn.net/bekars/article/details/611072 摘要:针对32位ARM处理器开发过程中调试技术的研究,分析了 ...
- Linux 手势识别,基于嵌入式Linux的手势识别技术研究
摘要: 随着科学技术的发展,手势识别技术也得到了很大的提升,基于视觉的手势识别逐渐成为人机交互技术中的研究热点.它应用于各种控制领域,如智能控制,机械手以及手语识别等.目前,嵌入式技术和相关产品也早已 ...
- Linux内核调试技术指南
前两天,完成了ucos在2440上的移植,以及boot的修改.今天突然想到,我在linux下,该如何来编写,调试比较复杂的驱动.我想这个问题应该从如何调试内核入手,先转载两个文字,待西西看来. 系统搭 ...
- linux内核 printk实现,Linux内核调试技术之printk
1.简介(基于s3c2440 linux) 在内核调试技术之中,最简单的就是printk的使用了,它的用法和C语言应用程序中的printf使用类似,在应用程序中依靠的是stdio.h中的库,而在lin ...
最新文章
- 在Linux中同时删除一百万个小文件的最快方法
- 一个简单的HelloWorld程序
- C#中理解接口以及接口的作用
- 布尔类型(boolean/Boolean)自动生成的get方法需要注意的小细节
- IBM推出可加快响应跨云网络威胁的开放技术 业界首次实现跨安全工具和跨云的搜索威胁功能,无需移动数据
- 【2016年第5期】生态经营论
- hanlp安装和使用
- 设计模式(9)——模板方法模式
- python处理json数据(复杂的json转化成嵌套字典并处理)
- Java web项目的解耦合
- VSS的基本使用操作介绍
- 院校-国外-美国:斯坦福大学( Stanford)
- 安卓系统格式化SD卡
- sam卡和sim卡区别_SAM卡概述
- LG W800手机上网软件,UCWEB浏览器下载
- java读取控制台输入_如何使用Java中的Scaner类从控制台读取输入?
- 分类常用的神经网络模型,典型神经网络模型包括
- 内蒙古中考计算机考试知识点总结,内蒙古包头中考语文备考分析及知识总结.doc...
- 求助:电压跟随器的输入电压问题
- 语义分割标签制作全过程(适合新手)
热门文章
- [转]Java jdbc数据库连接池总结!
- 丹琦女神的对比学习新SOTA,在中文表现如何?我们补充实验后,惊了!
- 【论文解读】结合概率图模型和神经网络做图片问答
- 最先进的语义搜索句子相似度计算
- 【比赛】智源计算所-互联网虚假新闻检测挑战赛(冠军)方案分享,代码已开源...
- 机翻测评 | 友商翻译 VS 火山翻译-中译英语向
- 《神经网络与深度学习》课程笔记(4)-- 浅层神经网络
- 时间序列-ARIMA模型调参检验实战
- 机器学习算法基础2-机器学习大致了解
- 推荐系统(Recommendation system )