内核编译过程的调试小窍门

本文介绍了如何在内核编译过程中进行调试,通过在特定的make阶段使用自定义的Makefile.build,添加调试输出,以便更好地理解内核编译流程。以net/9p/目录为例,说明了如何修改make命令,将内置对象编译规则指向包含调试信息的Makefile.build,从而观察obj-y和obj-m等关键定义。
摘要由CSDN通过智能技术生成

通常的makefile调试手段学会了后,个人使用了一个调试内核编译过程的小窍门。

因为内核的文件超多,各个makefile又是大家通用的。所以如果在某个makefile中添加打印信息,那估计就是满眼输出,你都不知道看哪里了。

思路

那可以怎么做呢?

我们不是已经看到内核编译的整体架构是

build := -f $(srctree)/scripts/Makefile.build obj
    $(Q)$(MAKE) $(build)=$@

好了,我想到的方法就是,在Make某个builtin.o的时候,强行把规则改了,变成使用另一个Makefile.build。这样就可以在自己添加的Makefile.build中,添加调试输出了。

对net/9p/目录调试的例子

下面给个例子,拿net/9p/这个目录举例。

比如我们可以

make net/9p/built-in.o

来编译这个文件。但是可能在编译的时候发现没有达到我们的预期,或者是想看看这个编译的过程都是什么样子的,学习一下kbuild的结构。那么可以做如下改动。

diff --git a/Makefile b/Makefile
index 2203500..dac1344 100644
--- a/Makefile
+++ b/Makefile
@@ -1547,6 +1547,8 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值