[linux]如何跟踪linux 内核运行的流程呢

前面已经可以把内核编译出来,但是作为技术狗想看到内核是怎么运行的怎么办?

内核很多代码都是C语言写的,那简单,添加2行代码:

include/linux/printk.h

529和530原来的:

#define pr_info(fmt, ...) \
    printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)

改为:

#define pr_info(fmt, ...) \

printk(KERN_INFO "%s %s "pr_fmt(fmt), __FILE__, __FUNCTION__, ##__VA_ARGS__)

上面这行代码添加主要是在显示日志的时候把当前文件名和函数信息带上,这样容易知道是哪个文件,哪个函数打印的日志,比较容易梳理代码运行的流程。

init/main.c的start_kernel函数添加如下一行:

如果需要编译多次,可以在内核源代码目录/usr/src/linux-6.9建立一个shell脚本,比如我的命名是auto_compile.sh:

make -j8
make -j8 modules_install
make -j8 install
mkinitramfs -o /boot/initrd.img-6.9.0
update-initramfs -c -k 6.9.0
reboot

添加可执行权限后,这样可以一个脚本搞定,非常的舒服,如果一切正常,重启后执行dmesg就可以看到我们添加的代码生效了,如下图第2行所示:

内核执行速度是比较快的,本质上是一个死循环,打印日志的时候不能太多,可以多尝试就会明白。

当前是在虚拟机运行的,如果有条件的话在真实电脑上运行比较有意思,不过真实电脑上主要怕有时候操作系统起不来,虚拟机就不怕,各种快照,重装系统。。。。。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值