《Android深度探索》第十章心得体会

《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。灵活使用这些调试技术才是调试的根本。这些经验需要不断从实践中领悟。

时间: 2024-08-01 22:32:47

《Android深度探索》第十章心得体会的相关文章

第十章心得体会

通过第十章的学习,我学到了如下知识点: 1.尽管linux驱动直接与硬件打交道,但并不是linux驱动直接向硬件中的内存写数据,而是本机的I/O内存进行交互. linux驱动           I/O内存             硬件 2.linux内核的内存管理模块负责同步I/O内存和硬件中的数据.每一个连接linux的硬件在linux内存中都有映射首地址,在使用ioread.iowrite等函数读写I/O内存时,指定这些首地址. 3.硬件在被检查到只说明在内核空间中建立了I/O内存,要想在

android深度探索第十章心得体会

第十章讲了 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行测试.例如设置断点.逐步跟踪代码输出调试信息等. 在Linux系统中,/proc经常被用来作为内核空间与用户空间进行数据交互的工具,/proc文件系统的行为方式与设备文件系统类似./proc是虚拟文件系统,也就是说,/proc并不是真正的文件系统,而是内存映射.所有读写/proc的操作都是对内存的读写.所以读写/proc文件系统的速度要远比读写/dev文件系统的速度快,因此,/proc文件系统也可作为Linux驱动与

第十章 心得体会

通过第十章的学习,了解了在嵌入式Linux驱动开发中的调试技术已经调试工具. 学到的知识: 一.打印内核调试信息:printk printk函数的原型如下: asmlinkage int printk(const char * fmt, ... ) printk文件是一个简单的有4个数字组成的文本文件,该文件的默认值如下:6 4 1 7 6:将消息输出到控制台的级别. 4:默认的消息日志级别. 1:控制台日志级别可被设置的最小值 7:控制台日志级别的默认值. 二.防止printk函数降低Linu

《Android深度探索》(卷1)HAL与驱动开发 第十章心得体会

本章主要讲了嵌入式Linux的调试技术. (一)打印内核调试信息:printk Printk函数用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间,printk函数在printk.c文件中实现. Printk函数的原型如下:asmlinkage int printk(const char *fmt,...) 第1个参数表示格式字符串,后面是可变参数.第一个参数值前面加尖括号包含的数字表示输出的日志级别,共有8个级别,在linux/kernel.h头文

阅读《软件工程—理论方法与实践》第十章心得体会

有错是软件的属性,无法改变.测试是对软件产品质量的检验和评价.软件测试的基本原则:①尽早地和不断地进行软件测试;②避免检查自己的程序;③测试用例包括合理输入条件和不合理的输入条件;④测试用例应包括测试输入数据和与之对应的预期输出结果;⑤注意测试中的群集现象;⑥严格执行测试计划,排除测试的随意性;⑦对每一个测试结果做全面检查;⑧保存测试过程文档,为维护提供方便.测试文档包括:测试计划.测试规范.测试用例.缺陷报告等.测试人员要有沟通能力.移情能力.技术能力.自信心.外交能力.幽默感.很强的记忆力.

安卓移植和驱动开发第十章心得体会

对于复杂的 Linux 驱动及 HAL等程序库,需要使用各种方法对其进行调试. 例如,设置断点. 逐步跟踪代码.-输出调试值息等.虽然嵌入式Linux在调试方面并没有 Visual Studio. Delphi. Eclipse 这些可视偌工其荒便,但学习一些这方面的技术无疑更奇脚手亮发强款而稳定的 Linux 内核模块←对 于嵌入式 Linux 内核模块.对于嵌入式的调试可能要更复杂一些.因为有时候需要至 少两台机器(开发机和-目标机)用于调试将主要介绍如何利用开发板之 Android模拟器以

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术

Android深度探索(卷1)HAL与驱动开发 心得体会 第十章  嵌入式Linux的调用技术 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点,逐步跟踪代码.输出调试信息等.虽然嵌入式Linux在调试方面并没有Visual Studio.Delphi.Eclipse这些可视化工具方便,但是学习一些这方面的技术无疑更有助于开发强大而稳定的Linux内核模块. 对于嵌入式Linux内核模块,可执行程序.代码库的调试可能更要复杂些.因为在大多数时候需要至少两台

AngularJS心得体会

AngularJS早些时候有过了解,知道这是一个JS的MVC框架,同类型的框架还有Backbone等.这次是由于项目需要,学习了两天的Angular后开始着手改之前的项目代码,这里大概说一下这一周学习Angular的心得体会吧. 首相,使用Angular最大的感受就是它的设计思路完全不同于Jquery,jquery更倾向于对Dom的操作:而使用Angular则需要你有一个全局的认识,你必须知道你想要做成什么样子才可以下手去做,所以我感觉ng对前端开发的要求比jquery要高一些.先来看看Angu

关于软件项目管理的心得体会之一

目的 软件项目管理是一项涉及面较广,但是非常必要的一项技能.相较于软件开发中的其他专业技能, 又更加依赖于实践和阅历.这里想跟各位同仁分享一下自己在过往项目中的心得体会,结合些许耳熟能详的理论,起到抛砖引玉的作用. 局限性 项目管理既然是一门实践科学,所以这里跟大家分享之前,还是要说明局限性.因为我之前是在一家提供软件服务的传统软件公司工作, 所以很多项目的经验都来源于作为乙方的外包项目,同时,大部分项目都是移动相关领域.目前我在一家国内的互联网公司,从事的电商相关的应用项目. 开篇 想跟大家分