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

  • 相关阅读:
    bzoj 3531 [Sdoi2014]旅行(树链剖分,线段树)
    bzoj 2243 [SDOI2011]染色(树链剖分,线段树)
    spoj 375 Query on a tree(树链剖分,线段树)
    bzoj 2618 2618: [Cqoi2006]凸多边形(半平面交)
    C++中int型与char型相互转换的问题
    408 二进制求和
    407 加一
    斐波那契数列几种算法及时间复杂度分析
    397 Longest Continuous Increasing Subsequence
    376 二叉树的路径和
  • 原文地址:https://www.cnblogs.com/zi-qing/p/5641817.html
Copyright © 2011-2022 走看看