我试图在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 ,那么我想看看库中正在执行哪些指令以及如何将控件返回给内核?
答案 0 :(得分:0)
我已设法使用以下所述的步骤调试BusyBox的/sbin/init
:Is 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
它有点片状,但大部分只是起作用。