vlambda博客
学习文章列表

Linux 内核终于可以 debug 了!

来源:经授权转自 低并发编程(ID:dibingfa)


今天终于成功 debug 了 Linux 内核,允许我一惊一乍给大家分享下喜悦吧!

之前读 Linux 的源码,一直想着如果能 debug 就好了。

无奈 Java 出身的我,本来对 c 就很不熟,跑起一个 c 代码就很费劲了,更别说调试,而且还是调试这种和普通 c 项目不一样的内核代码。

仅仅是出于学习 Linux 内核源码的目的想要调试,所以不想花太多时间研究如何构建这个调试环境,想着在网上找个教程,一次性部署好之后就一直用了,无奈一直没找到能照着文档就搭建成功的。

今天终于找到一个大佬的文档,直接按上面说的就能操作成功,分享给大家,同时我自己也做个备份。

先照着这个文档,使得可以用 gdb 进行调试:

https://wenfh2020.com/2021/05/19/gdb-kernel-networking/

再按照这个文档,用 vscode 进行更直观地调试(当然也是 gdb 方式):

https://wenfh2020.com/2021/06/23/vscode-gdb-debug-linux-kernel/

最终效果是。

虚拟机这边用 qemu 启动 Linux 5.0.1 内核。

Linux 内核终于可以 debug 了!

本机这边用 vscode 的 ssh-remote 插件远程连接虚拟机,然后用 gdb debug。

Linux 内核终于可以 debug 了!

给大家放大点。

Linux 内核终于可以 debug 了!

main.c 下的主方法。

看到断点进来相当激动了!这个文档我可得保存好,虚拟机镜像也不敢动了,哈哈,以后就可以开开心心 debug Linux 内核啦。

不过中间也踩了好多坑,原本我想着灵活一点,用自己的 ubuntu 版本,用自己想调试的 Linux 内核版本,无奈都失败了,中间有各种奇奇怪怪的问题...

我就放弃了,乖乖先按照人家的文档跑起来再说吧~

不知道文档里是不是有多余操作,反正各种骚操作我是看不懂,还要改 gdb 的源码。

之后我看看能不能把低版本的 Linux 也搞通,如果大家有更方便地调试方法,可以教教我,这块真是空白。

Linux 内核终于可以 debug 了!

1、

2、

3、

4、

Linux 内核终于可以 debug 了!

Linux 内核终于可以 debug 了!

点分享

点点赞

点在看