我是内核开发的新手,我想知道如何使用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