4

我正在尝试在 Qemu 上模拟 cavium octeon 的 mips64 linux 内核。我目前在使用模式初始化代码方面遇到一些问题,并且想要调试 init。我正在使用命令行中的 -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 当前仅显示在内核空间中运行的指令。

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

4

1 回答 1

0

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

您必须记住的唯一其他事项是:

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

它有点不稳定,但大多数情况下都可以。

于 2017-10-08T21:13:54.607 回答