我从我vmlinux.uimg
的vmlinux
朋友那里得到了。这vmlinux
是使用 Linux 版本 4.14.10 构建的。我有两台机器:
- 目标(arm 32 位架构)和
- 主机(x86 架构)
两个系统都用线连接,端口号分别是/dev/ttySAC3
和/dev/ttyUSB0
。vmlinux.uimg
通过从 sd 卡读取图像文件来启动目标。我想vmlinux
从我的主机调试这个。
我遵循的步骤是:
- 在主机中启动 minicom。
类型
echo ttySAC3,115200 > /sys/module/kgdboc/parameters/kgdboc in minicom.
我收到“KGDB:注册的 I/O 驱动程序 kgdboc”。
类型
echo g >/proc/sysrq-trigger in minicom
我收到“sysrq DEBUG 并进入 KGDB”。
- 关闭迷你通。
- 通过主机中的终端转到 vmlinux 文件夹。
类型
gdb vmlinux
[注意:我使用的这个 gdb 是 arm 的 7.10 版本]
在 GDB 类型中
target remote /dev/ttyUSB0
它给我一个消息
Remote debugging using /dev/ttyUSB0 0xc0d14f5 in sysrq_dbg_op()
在 GDB 类型中
b do_mmap_pgoff
我收到一条消息
breakpoint 1 at xxxx: do_map_pgoff (4 location)
在 GDB 类型中
cont
这给了我一个信息
Continuing.
然后什么都不做。。
问题:
GDB
continue
没有按预期工作。我期待最后一步(9)继续目标重启并达到断点而不是崩溃。GDB
step
并next
没有按预期工作。单步执行直到退出,sysrq_dbg_op()
其中没有行号信息。“警告:无效的远程回复”。GDB“运行”也不起作用。它显示一条消息“远程目标不支持运行”
我如何在我放置断点的目标上调用一个模块,因为我不能同时使用 minicom 和 gdb。
冻结内核后我应该遵循的所有步骤。
这个过程有什么问题?