基于linux的调试技术

虽然使用printk函数可以很方便的将消息写入日志文件或者控制台。但是大量使用printk函数频繁的操作日志文件或者控制台文件会严重影响到linux驱动的开发性能。因此,这就需要linux驱动在开发阶段使用printk函数输出消息,在正式发布linux驱动时候将可能影响驱动性能的printk函数去掉。当然,我们可以想到的最简单的方法就是一个接一个的删掉printk函数,但是这样是很不实际的想法,并且是十分麻烦的,而且如果以后想要在使用printk函数又有很麻烦的,会影响到以后的操作。想要控制printk的输出,而且实现起来方便,最好的方法无疑就是利用C语言中的编译命令了。

Linux内核调试一直被很多人认为是十分困难的。大多数人宁愿直接使用printk函数输出调试信息。也不愿意使用各种命令进行调试。因为这样做不一定能换来更多的好处。

Android模拟器只能通过端口映射方式使用gdbserver调试程序。但是开发板除了可以通过IP链接到gdbserver外,还可以通过串口进行调节。

时间: 2024-08-03 18:19:12

基于linux的调试技术的相关文章

Linux内核调试技术——jprobe使用与实现

前一篇博文介绍了kprobes的原理与kprobe的使用与实现方式,本文介绍kprobes中的第二种探测技术jprobe,它基于kprobe实现,不能在函数的任意位置插入探测点,只能在函数的入口处探测,一般用于监测函数的入参值.本文首先通过一个简单的示例介绍jprobe的使用方式,然后通过源码详细分析jprobe的实现流程. 内核源码:Linux-4.1.x 实验环境:Fedora25(x86_64).树莓派1b 1.jprobe使用实例 使用jprobe探测函数的入参值,需要编写内核模块.同k

Linux内核调试技术——kretprobe使用与实现

摘自:https://blog.csdn.net/luckyapple1028/article/details/54782659前两篇博文介绍了kprobes探测技术中kprobe和jprobe的使用与实现.本文介绍kprobes中的最后一种探测技术kretprobe,它同样基于kprobe实现,可用于探测函数的返回值以及计算函数执行的耗时.本文首先通过一个简单的示例程序介绍kretprobe的使用方式,然后通过源码分析它是如何实现的. 内核源码:Linux-4.1.x 实验环境:Fedora2

嵌入式Linux的调试技术

嵌入式Linux的调试技术对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点.逐步跟踪代码.输出调试信息等. Printk函数的用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间.也就是说,像Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息.Printk函数在printk.c文件中实现. 虽然使用printk函数可以很方便的将消息写入日志文件或控制台.但大量使用printk函数频繁操作日

第十章 嵌入式Linux的调试技术

本章的主要内容是嵌入式Linux的调试技术.对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试. 一.打印内核调试信息:printk 该函数的用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间.像Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息.Printk函数在printk.c文件中实现,该文件的路径:/root/kernel/linux_kernel_2.6.36/kernel/printk.c. 二

第10章 嵌入式Linux的调试技术 学习心得

第10章嵌入式Linux的调试技术 心得体会 这一章主要概括的介绍了嵌入式Linux的调试技术的主要内容.通过对第10章的学习,使我对嵌入式Linux的调试技术的方法以及操作步骤有了一个基本的认识. 一 调试前的准备 在调试一个bug之前,我们所要做的准备工作有: 有一个被确认的bug. 包含这个bug的内核版本号,需要分析出这个bug在哪一个版本被引入,这个对于解决问题有极大的帮助.可以采用二分查找法来逐步锁定bug引入版本号. 对内核代码理解越深刻越好,同时还需要一点点运气. 该bug可以复

嵌入式 Linux 的调试技术读书笔记

对于复杂的 Linux 驱动及 HAL等程序库,需要使用各种方法对其进行调试. 例如,设置断点. 逐步跟踪代码.-输出调试值息等.虽然撒入式Linux在调试方面并没有 Visual Studio. Delphi. Eclipse 这些可视偌工其荒便,但学习一些这方面的技术无疑更奇脚手亮发强款而稳定的 Linux 内核模块对于嵌入式 Linux 俞核模块.可fA,衍程庄. 央事库的调试可能要更复杂一些.因为在失多赞时候需要至 少两台机器开发机和目标机. 在 Linux 文件系统中, /proc 经

linux驱动调试技术

 对于驱动程序设计来说,核心问题之一就是如何完成调试.当前常用的驱动调试技术可分为: ? 打印调试(printk) ? 调试器调试(kgdb) ? 查询调试 1.合理使用printk #ifdef PDEBUG #define PLOG(fmt,args...) printk(KERN_DEBUG "scull:"fmt,##args) #else #define PLOG(fmt,args...) /*do nothing */ #endif Makefile作如下修改: DEB

第10章 嵌入式linux的调试技术

一.      防止函数printk降低linux性能: 利用C语言中的编译指令(#if.#else.#endif等). 现在修改printk_demo驱动代码,通过编译指令定义了一个pr_debug宏,并通过修改编译指令的条件值来控制是否调用printk函数.如下: # if 1//此处为1,使用printk函数,为0,忽略printk函数 #define pr_debug(x,…)  do { } while(0) #endif 除此之外,我们还需要了解两个知识点:1.可变参数的宏:可变参数

第10章:嵌入式Linux的调试技术

对于复杂的Linux驱动及HAL等程序库, 需要使用各种方法对其进行调试.例如, 设置断点.逐步跟踪代码.输出调试信息等. 一.打印内核调试信息:printk printk函数在前面的章节己多次使用过.该函数的用法与printf函数类似,只不过printk函数运行在内核空间,printf函数运行在用户空间.也就是说,像Linux驱动这样的Linux内核程序只能使用printk函数输出凋试信息. 二.防止printk函数降低Linux驱动性能 虽然使用printk函数可以很方便地将消息写入日志文件