使用gdb在Qemu上调试init

时间:2013-04-29 07:47:23

标签: linux gdb init qemu

我试图在Qemu上模仿cavium octeon的mips64 linux内核。我目前在使用模式初始化代码时遇到了一些问题,并希望调试init.i在命令行中使用-s -S选项启动Qemu并运行gdb使用命令

ddd --debugger / OCTEON-SDK / tools / bin / mips64-octeon-linux-gnu-gdb /OCTEON-SDK/linux/kernel_2.6/linux/vmlinux

然后使用命令

附加gdb

目标远程localhost:1234

gdb目前只显示在内核空间中运行的指令。

我想问的是,有什么方法可以像内核空间一样逐步调试usermode init和库指令? 例如,如果从init发出 printf ,那么我想看看库中正在执行哪些指令以及如何将控件返回给内核?

1 个答案:

答案 0 :(得分:0)

我已设法使用以下所述的步骤调试BusyBox的/sbin/initIs it possible to use gdb and qemu to debug linux user space programs and kernel space simultaneously?

您必须记住的唯一额外事项是:

  • /sbin/init只是busybox的符号链接,因此您必须使用/bin/busybox作为目标文件
  • /sbin/init的“main”函数实际上是init_main,遵循BusyBox'为每个伪可执行文件调用main的约定为<exec>_main

它有点片状,但大部分只是起作用。