我是內核開發的新手,我想知道如何使用QEMU和gdb運行/調試Linux內核。我實際上閱讀了羅伯特·洛夫的書,但不幸的是,它並沒有幫助讀者如何安裝適當的工具來運行或調試內核......所以我所做的就是遵循本教程http://opensourceforu.efytimes.com/2011/02/kernel-development-debugging-using-eclipse/。我使用eclipse作爲IDE在內核上開發,但我首先想讓它在QEMU/gdb下運行。因此,我所做到目前爲止是:如何使用GDB和QEMU調試Linux內核?
1)與編譯內核:
make defconfig (then setting the CONFIG_DEBUG_INFO=y in the .config)
make -j4
2)一旦編譯了我用跑的Qemu:
qemu-system-x86_64 -s -S /dev/zero -kernel /arch/x86/boot/bzImage
其進入內核在「停止」狀態
3)因此,我不得不使用gdb的,我嘗試使用以下命令:
gdb ./vmlinux
它運行正確,但...現在我不知道該怎麼辦......我知道我必須使用端口1234(Qemu使用的默認端口)上的遠程調試,使用vmlinux作爲符號表文件進行調試。
所以我的問題是:我應該怎麼做才能在Qemu上運行內核,將調試器附加到它上面,從而使它們一起工作,使內核開發更輕鬆。
謝謝它的作品很多:)。我剛剛讀完了這本書,內容涉及DDD,eclipse和gdb,不是由澱粉出版社出版的,但本書沒有遠程調試。我的內核現在正在啓動,但似乎需要一些時間來加載(因爲Qemu似乎只使用我的機器上的一個線程),現在被阻止在:? kernel_thread_helper +爲0x0/0x10的。它是內核用來加載的方式嗎?我的意思是,一旦它被加載,我們不應該有一個命令提示符嗎?謝謝 – 2012-07-10 09:24:45
它適合我。但是,我不知道如何在調用第一次繼續之後強制停止斷點。例如,我在start_kernel函數中放置了一個斷點,但它永遠不會停在那裏。任何想法 ? – ARH 2013-03-17 04:35:03