使用GDK8调试内核模块(以刘姥姥为例)
刘姥姥是曹雪芹在《红楼梦》中塑造的一个著名角色,同时也是由格蠹开发的一个小型内核模块,通过刘姥姥驱动,用户可以亲手写代码,把自己的代码放入到内核世界,像刘姥姥进大观园那样真正走进LINUX内核世界。
本篇文章就以刘姥姥驱动为例,展示如何借助GDK8、挥码枪以及Nano Code来进行内核模块的调试。
主要步骤:
1.进入GDK8中加载刘姥姥内核模块
cd /home/geduer/gelabs/llaolao
注:如果进入llaolao文件夹后没有看到.ko文件,需要先执行make
操作来进行编译。
输入命令来加载这个内核模块:sudo insmod llaolao.ko
需要卸载内核模块可以使用命令:sudo rmmod llaolao
加载成功后可以使用命令来测试内核模块是否加载成功,使用命令来测试是否加载成功可以参考以下文章:
https://www.nanocode.cn/wiki/docs/youlan/youlan-1es7tc4pgnull
例如:
本人使用的GDK8中的刘姥姥文件名为llaolao,如果为llaolao2则步骤也与上面相同
2.加载符号并进行内核调试
llaolao.ko文件放入主机加载符号的同个位置中:
并进行内核调试,步骤和之前的文章相同,这里不再赘述
https://www.nanocode.cn/wiki/docs/gdk8_primer/gdk8_primer-1et5la1gp8i0u
进入内核调试成功后,执行.reload
重新加载一下符号,再执行x llaolao!*
输
出相关符号,出现以下界面则代表llaolao符号已经加载成功。
3.打上断点进行测试
这里我们可以先寻找llaolao中相关的read函数进行断点测试,看是否能够命中断点。
我们选中proc_lll_read函数进行测试,给llaolao!proc_lll_read地址打上一个断点。
然后我们在GDK8中执行cat /proc/llaolao
命令,看是否能够命中断点。
可以看到在输入这个命令后,断点命中,也就是内核模块刘姥姥可以在GDK8中进行成功的调试。
最后编辑:张诗雨 更新时间:2024-09-14 11:25