Linux 內(nèi)核終于可以 Debug 了!
今天終于成功 debug 了 Linux 內(nèi)核,允許我一驚一乍給大家分享下喜悅吧!
之前讀 Linux 的源碼,一直想著如果能 debug 就好了。
無奈 Java 出身的我,本來對 c 就很不熟,跑起一個 c 代碼就很費勁了,更別說調(diào)試,而且還是調(diào)試這種和普通 c 項目不一樣的內(nèi)核代碼。
僅僅是出于學習 Linux 內(nèi)核源碼的目的想要調(diào)試,所以不想花太多時間研究如何構(gòu)建這個調(diào)試環(huán)境,想著在網(wǎng)上找個教程,一次性部署好之后就一直用了,無奈一直沒找到能照著文檔就搭建成功的。
今天終于找到一個大佬的文檔,直接按上面說的就能操作成功,分享給大家,同時我自己也做個備份。
先照著這個文檔,使得可以用 gdb 進行調(diào)試:
- https://wenfh2020.com/2021/05/19/gdb-kernel-networking/
再按照這個文檔,用 vscode 進行更直觀地調(diào)試(當然也是 gdb 方式):
- https://wenfh2020.com/2021/06/23/vscode-gdb-debug-linux-kernel/
最終效果是。
虛擬機這邊用 qemu 啟動 Linux 5.0.1 內(nèi)核。
本機這邊用 vscode 的 ssh-remote 插件遠程連接虛擬機,然后用 gdb debug。
給大家放大點。
main.c 下的主方法。
看到斷點進來相當激動了!這個文檔我可得保存好,虛擬機鏡像也不敢動了,哈哈,以后就可以開開心心 debug Linux 內(nèi)核啦。
不過中間也踩了好多坑,原本我想著靈活一點,用自己的 ubuntu 版本,用自己想調(diào)試的 Linux 內(nèi)核版本,無奈都失敗了,中間有各種奇奇怪怪的問題...
我就放棄了,乖乖先按照人家的文檔跑起來再說吧~
不知道文檔里是不是有多余操作,反正各種騷操作我是看不懂,還要改 gdb 的源碼。
之后我看看能不能把低版本的 Linux 也搞通,如果大家有更方便地調(diào)試方法,可以教教我,這塊真是空白。
本文轉(zhuǎn)載自微信公眾號「低并發(fā)編程」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系低并發(fā)編程公眾號。