此篇文章延續前文 ─ “Linux Kernel Development / Debugging (1) - 第一次玩 qemu/kgdb 就上手”,簡單介紹如何使用 gdb / kgdb 對核心模組 (kernel module) 進行即時的 debugging。
在先前的文章中,介紹了如何使用 qemu、kgdb、gdb 對核心進行動態的 debugging,並在編譯核心時在 vmlinux 中包含 debugging information,使 debug 時能夠直接瀏覽原始碼以及對變數進行存取。然而,kernel module 是在核心之外的,因次就算編譯時加上 -g GCCFLAG 也無法直接在 gdb 中存取其 debugging information。
網路上許多 kgdb 的教學都是拿編好的 kernel image 搭配 busybox 來載入 qemu 開機,但這次學校作業內容包含執行 Firefox,所以需要跑在一個較完整的作業系統上。
這篇文章是這幾天摸索的心得,其實還沒包含如何去玩 kernel debugging ,因為我還不會XD。 文章分成三個部份:1. 設定與安裝 Debian 於 QEMU 虛擬機器、2. 編譯 Linux 支援 kgdb 的核心以及 initrd、3. 使用 gdb/kgdb 做核心除錯。