【发布时间】:2013-04-22 19:43:59
【问题描述】:
我正在尝试在 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
目标远程 localhost:1234
gdb 当前只显示在内核空间中运行的指令。
我想问的是,在内核空间的情况下,有什么方法可以让我逐步调试用户模式初始化和库指令? 例如,如果 printf 是从 init 发出的,那么我想查看库中正在执行哪些指令以及控制权如何返回给内核?
【问题讨论】:
-
这取决于 gdb 对 MIPS 的支持是否可以处理内核和用户空间之间的转换。尝试在内核中的 resume_userspace 上设置一个断点,然后从那里单步执行,看看是否处理了转换。