使用gdb在Qemu上debugginginit

我试图模仿在Qemu上的cavium octeon的mips64 linux内核。我目前有使用模式的init代码的一些问题,并且想要debugginginit.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

目标远程本地主机:1234

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

我想问的是有什么方法,我可以像在内核空间的情况下一步一步地debugging用户模式初始化和库指令? 例如,如果printf是从init发出的,那么我想看看哪些指令正在库中执行,以及如何将控制权返回给内核?

我已经设法使用以下描述的过程来调试BusyBox的/sbin/init : 是否可以使用gdb和qemu同时调试linux用户空间程序和内核空间?

唯一需要记住的是:

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

这有点片状,但大多数只是工作。