linux下用GDB调试可加载模块

参考文章:http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/developers-handbook/kerneldebug-kld.html

这篇文章主要是对参考文章的简单整理,大同小异

首先,需要在编译模块时加入调试信息。两种方式,一种是编译时使用“make COPTS-g”,另一种是用“gcc -g”作为“gcc”的别名。
第二步,插入模块,找到模块的加载位置。原文是用 kldstat命令,linux下没找到,但是可以通过
“cat /proc/modules | grep test”(假设模块名称为test.ko,注意不要带".ko")找到模块的加载地址,如下图所示:


第三步,找到代码段(.text段)的偏移量,如下图所示:


偏移量是.text对应的行中第四个十六进制字段(或者说从左往右数第六个字段)是.text段在文件中的偏移量。将这一偏移量与模块中的加载地址相加,就可以找到模块的代码在重定向之后的地址了。在我们的例子中,可以得到0xffffffffa001b000 + 0x00000040 = 0xFFFFFFFFA001B040。

最后的操作如下图所示:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值