怎样快速调试linux内核?有哪些需要注意的问题?

这个问题就比较专业了,linux内核调试还是在调试内核驱动的时候用过,涉及的程度不是特别深,但是可以说下大致的思路,linux虽然贵为操作系统,但是归根到底还是一个程序,既然是程序就能用debug的方式去调试,只不过由于环境的差异,使用的方法和工具不尽相同,在linux下面常见的调试工具gdb,在windows上面更多的调试工具是界面化的,直接对应的中间变量的数值以及申请内存的地址都会直观的展示出来,在linux上主要是通过命令的方式查看,开始会觉得很不习惯,觉得很深奥,其实就是命令的行的使用也就是常见的几个命令。

回到正题linux内核调试用的kgdb,一种专门针对linux内核的调试工具,所谓的内核的调试,主要还是在嵌入式板卡上用的比较多,需要掌握一个概念交叉编译,这个是玩嵌入式的必备概念,通俗点讲,在主机电脑上将程序编译好,然后放在嵌入式板卡里面运行,在这就不一一举例如何去运行,这种教科书般的教程随手就能在网上获取,现在只是把一些关键技术步骤或者细节点归纳几条分享给大家:

1.生成的调试库以及驱动ko文件都会比较大,所以准备的磁盘空间至少20G左右

2.需要让内核支持支持kgdb调试功能,需要打开配置开关,正常的编译内核用make menuconfig,进入kernel hacking一项

3.在编译工程中注意文件的备份,一旦生成有问题,可以拿着之前的版本进行恢复

4.linux内核的调试其实就是vmlinux的调试,在这涉及到一个很关键的概念,远程调试,内核的调试一般采用串口连接的方式,现在linux应用远程调试用网络的居多

5.调试内核,很多命令使用还是基于gdb完成,gdb的命令还是要熟悉

简单呢归纳到这里,希望能帮到你。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2018-09-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏郝阳的专栏

关于分布式“缓存”的思考

本文从缓存的分类、同步和空查询三个问题分享下对分布式缓存的一些想法,抛砖引玉。

87500
来自专栏云计算教程系列

为你的服务器增加Swap分区

避免应用程序内存不足错误的最简单方法之一是为服务器添加一些Swap空间。Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行...

43150
来自专栏公众号_薛勤的博客

Java性能调优工具(Linux、Windows篇)

top命令的输出可以分为两部分:前半部分是系统统计信息,后半部分是进程信息。在统计信息中,

50320
来自专栏开发与安全

linux系统编程之基础必备(七):read/write函数与(非)阻塞I/O的概念

一、read/write 函数 read函数从打开的设备或文件中读取数据。 #include <unistd.h> ssize_t read(int fd,...

43300
来自专栏Youngxj

评论回复微信提醒-emlog插件

23130
来自专栏Golang语言社区

几种服务器端IO模型的简单介绍及实现

一些概念: 同步和异步 同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发I/O操作并等待或者轮询的去查看I/O操作是否就绪,而异步是指用户进程...

428100
来自专栏架构师之路

“id串行化”到底是怎么实现的?

一、需求缘起 在上一篇文章《消息“时序”与“一致性”为何这么难?》中,介绍了一种为了保证“所有群友展示的群消息时序都是一致的”所使用的“id串行化”的方法:让同...

44680
来自专栏云计算教程系列

如何在CentOS 7上添加Swap

使服务器响应更快,并防止应用程序中出现内存不足错误的最简单方法之一是添加一些swap空间。Swap是存储驱动器上的一个区域,操作系统可以在该区域临时存储无法再保...

21320
来自专栏闵开慧

hadoop集群调优分两个方面,map和reduce

hadoop集群调优分两个方面,map和reduce map调优:         map 任务执行会产生中间数据,但这些中间结果并没有直接IO到磁盘上,而...

37750
来自专栏IT派

Python3.7中一种懒加载的方式

Python3.7在模块上也添加了__getattr__()和__dir__()两个方法。这个新特性让我们能够实现一些有趣的事情。例如,通过定义__dir__方...

24000

扫码关注云+社区

领取腾讯云代金券