深度解析KGDB调试Linux模块和内核

本文深入探讨了KGDB在调试Linux内核模块和内核中的应用,详细介绍了KGDB的背景、调试环境搭建过程,包括目标机和开发机的配置,并提供了调试内核和模块的具体步骤。通过KGDB,可以有效地提高代码阅读和问题定位的效率。
摘要由CSDN通过智能技术生成

深度解析KGDB调试Linux模块和内核

转载文章请注明作者和二维码及全文信息。

不会编程的程序员,不是好的架构师,编程和内核调试也是出色架构师的必修课。谈起编程人员的数量,基于Linux平台的软件工程师肯定是最多的,没有之一。那今天我们就以Linux为例,深入讲一下内核模块和内核的调试技术和调试工具KGDB。

1 KGDB背景

KGDB是在内核2.6.26版本中正式支持的,对应发行版即SLES11及以上、RHEL6及以上,在此之前的内核版本由Linsyssoft Technologies公司提供补丁以支持KGDB,但并不是所有内核版本都有补丁可用,同时打补丁操作也比较繁琐且问题多多,因此可用性不高。

2 调试环境搭建

注:以下称 “被调试的主机”为目标机,运行gdb进行调试的主机为开发机

2.1 目标机配置

2.1.1 配置串口

物理机串口根据实际环境要求配置,虚拟机按如下方式配置,pipe名字可以修改,但要保证和开发机一致:

深度解析KGDB调试Linux模块和内核

2.1.2 更新内核以支持kgdb

注:本文以SLES11SP1作为目标机为例,内核源码直接安装RPM包就可以使用,RHEL要稍微麻烦一些,需要下载源码包,进行编译后进行安装。

更新内核前准备

加入调试信息后内核及各个ko的体积会增大数倍,因此编译内核前一定要确认磁盘有7G以上剩余空间(保险起见建议预留10G),执行make后源码目录空间占用超过5G。

深度解析KGDB调试Linux模块和内核

执行make modules_install后/lib/modules目录还要占用1.4G

深度解析KGDB调试Linux模块和内核

SLES系列默认内核源码目录是/usr/src/linux-xxx/,但由于试验用的虚拟机创建时磁盘选择默认大小只有8G,因此额外创建了一块20G的磁盘挂载到/home目录作为内核编译目录,可直接将目录usr/src/linux-xxx/拷贝到/home/linux-xxx/不影响编译。

更新内核步骤

1、执行uname –r确认当前运行内核的类型,拷贝/boot/目录下对应内核类型的config文件到内核源码目录并重命名为.config;大多数情况下编译内核后启动失败都是因为内核配置不当,因此最好在系统原有配置文件基础上修改。

深度解析KGDB调试Linux模块和内核

2、在内核源码目录执行make menuconfig进行内核配置;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构师技术联盟(Hardy)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值