一尘不染

如何使用GDB和QEMU调试Linux内核?

linux

我是内核开发的新手,我想知道如何使用QEMU和gdb运行/调试Linux内核。我实际上正在阅读罗伯特·洛夫(Robert
Love)的书,但不幸的是,它没有帮助读者了解如何安装适当的工具来运行或调试内核。因此,我要做的是遵循本教程http://opensourceforu.efytimes.com
/ 2011/02 / kernel-development-debugging-using-eclipse
/。我使用eclipse作为IDE在内核上进行开发,但我首先要使其在QEMU / gdb下工作。所以到目前为止,我所做的是:

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上运行内核,将调试器附加到内核上,从而使它们协同工作,从而使内核开发变得更加轻松。


阅读 500

收藏
2020-06-02

共1个答案

一尘不染

我会尝试:

(gdb) target remote localhost:1234
(gdb) continue

使用’-s’选项可使qemu侦听端口tcp :: 1234,如果您在同一台计算机上,则可以将其作为localhost:1234连接。Qemu的“
-S”选项使Qemu停止执行,直到您发出Continue命令为止。

最好的办法是看一本不错的GDB教程,以了解您的工作。这个看起来不错。

2020-06-02