• 第十章


    第十章讲的是嵌入式Linux的调试技术,对于复杂的Linux驱动及HAL等程序,需要使用各种方法对其进行调试,;如,设置断点、逐步跟踪代码、输出调试信息等。

    本章主要介绍如何利用开发板、android模拟器以及一些函数、工具调试嵌入式linux内核模块、可执行文件和共享库。

    首先讲的是打印内核信息:printk,该函数运行在用户空间,与printf类似。Linux系统通过/proc/sys/kernel/printk文件来控制printk函数输出日志信息的输出方向。Printk文件是一个简单的有4个数字组成的文本文件,4个数字含义分别如下:

    6:将消息输出到控制台的级别,只有高于该级别的输出信息才可以被输出到控制台

    4:默认的消息日志级别,如果不在printk函数制定日志级别,就会使用该值作为默认的级别。

    1:控制台日志级别可以被设置的最小值

    7:控制台级别级别默认值

    虽然使用printk函数可以很方便的将消息写入到日志文件或者控制台,但是大量使用printk频繁地操作日志文件或控制台设备文件会严重影响到linux驱动的性能,因此,这就要求linux驱动只在开发阶段使用printk函数输出消息。

    LINUX系统中提供了一类工作,通过他们可以逐步跟踪程序的代码,首先是用gdb调试用户空间程序,以及用kgdb远程调试内核程序。具体内容可以参考书上的代码部分。

    用gdb调试用户空间程序,它可以跟踪调试用户空间的程序。list用于列出程序中的代码。Android模拟器只能通过端口映射方式使用gdbserver调试程序。用kgdb远程调试内核程序,它除了提供类似printk函数的日记输出功能,还允许开发人员直接在PC上通过gdb链接目标设备。在设置完Linux内核的启动参数后,本机就可以使用gdb命令向调试普通嵌入式应用程序一样调试Linux内核,用各种.gdb命令进行Linux内核调试。本章介绍了传统的printk函数和其它的一些调试技术。

    第十章除了介绍printk函数调试技术以外,也介绍了其他调试技术,我们可以根据实际情况决定使用哪种。

  • 相关阅读:
    Spark&Hive结合起来
    spark&dataframe
    JAVA-数组或集合
    九种经典排序算法详解(冒泡排序,插入排序,选择排序,快速排序,归并排序,堆排序,计数排序,桶排序,基数排序)
    B+树介绍
    @transactional注解在什么情况下会失效,为什么。
    一个ArrayList在循环过程中删除,会不会出问题,为什么?
    Java:传值还是传引用?
    Java序列化的方式。
    实现动态代理的两种方式
  • 原文地址:https://www.cnblogs.com/jiaxing754/p/5641748.html
Copyright © 2020-2023  润新知