当前位置: 首页 > 面试题库 >

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

乜承嗣
2023-03-14
问题内容

我是内核开发的新手,我想知道如何使用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上运行内核,将调试器附加到内核上,从而使它们协同工作,从而使内核html" target="_blank">开发变得更加轻松。


问题答案:

我会尝试:

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

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

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



 类似资料:
  • 问题内容: 我正在从事学术项目,该项目修改了一些代码并包含了新代码。 我正在使用QEMU加载修改后的内核并进行测试。 但是,我发现某些操作系统需要完整的操作系统才能进行调试。 没有它可能吗? 或者,这是可以与Kernel 2.6一起用于系统的发行版。除了运行程序的功能(包括网络支持)以外,发行版不需要具有任何功能。 问题答案: 我认为最简单的方法是使用buildroot http://buildr

  • 问题内容: 任何人都可以指导如何使用GDB调试器在Linux上调试JNI代码(如果可能,请提出其他选择)。 我已经安装了Gdb,但是没有得到如何使用它调试项目的信息。我是否还需要使用-g选项t debug .so文件来编译.cpp文件? 问题答案: 启动您的Java应用程序 使用top,ps,…查找pid 使用此pid启动gdb 附加程序代码 像往常一样使用gdb进行调试 这篇博客文章解释了整个过

  • 我有一个设备驱动程序正在冻结操作系统。鼠标甚至不会移动。我正在尝试调试这个问题,我相信一个好的方法是将gdb与qemu一起使用,这是我以前从未使用过的两件事。有更好的方法吗? 因此,首先我需要用调试符号编译内核,我已经完成了。 现在,生成了一个名为vmlinux的新文件,它与源文件位于同一个文件夹中。我似乎还需要一个bzImage文件,这样我就可以运行新编译的内核,使用: 或者处于调试模式 我找不

  • 开发程序过程中调试代码是开发者经常要做的一件事情,Go语言不像PHP、Python等动态语言,只要修改不需要编译就可以直接输出,而且可以动态的在运行环境下打印数据。当然Go语言也可以通过Println之类的打印数据来调试,但是每次都需要重新编译,这是一件相当麻烦的事情。我们知道在Python中有pdb/ipdb之类的工具调试,Javascript也有类似工具,这些工具都能够动态的显示变量信息,单步

  • 问题内容: 我们有一个使用OpenSSL的Python绑定的Linux应用程序,我怀疑它会导致随机崩溃。有时,我们会看到它崩溃并显示以下消息: Python致命错误:GC对象已被跟踪 这似乎是库方面的编程错误,或者是内存损坏的症状。给定一个核心文件,有什么办法知道它执行的最后一行Python源代码?还是如果它附加在GDB中?我意识到这可能是所有已编译的字节码,但是我希望那里有人解决了这个问题。当前

  • 提示 视频 PPT 下载 本文的目的和背景 VS Code(全称 Visual Studio Code)是一个轻量且强大的代码编辑器,支持 Windows,OS X 和 Linux。内置 JavaScript、TypeScript 和 Node.js 支持,而且拥有丰富的插件生态系统,可通过安装插件来支持 C++、C#、Python、PHP 等其他语言。 本文主要介绍在 Windows 平台使用