linux - 我想通过 minicom 使用 gdb 在 arm board 上调试 vmlinux。我需要做什么?

标签 linux linux-kernel arm gdb gdbserver

我有一个 ARM 板,我通过电线将它连接到我的 linux(主机)系统。我在 arm 处理器中插入带有 vmlinux.uimg 的 sd 卡,并在主机系统上使用 minicom。现在我想使用 gdb 在 arm board 上调试 vmlinux。我需要做什么?我尝试在 minicom 上使用 gdbserver,在主机上使用 gdb。但是我不知道它到底是如何工作的...我应该在哪里复制vmlinux以及我应该如何调试...

最佳答案

完整的答案取决于您的 Linux 版本、开发和目标设置。这里有一些研究链接,

您需要为您的内核配置KGDB 支持,您可以使用控制台作为链接来从您的开发机器控制KGDB。您需要开发机器上的 vmlinux 目标文件的副本;如果它也是构建机器,则很容易。 GDB 有脚本来访问内核中的方便信息。这是GDB内核调试链接中的信息。

您没有使用gdbserver;这是针对用户空间 linux 进程的。调试内核的工具是kgdb,这需要将代码放入内核。通常 gdbserver 程序使用内核设施来控制进程。这不适用于内核本身。

可能并非所有串口都支持 kgdb。某些版本的 Linux 允许 kgdb over the network .然而,它并不像串口那样出现在那么多的内核中。您可以使用内核参数 kdbgocsysfs 或 magic sysreq 通过串行方式激活 kgdb。某些设备(和 Linux 版本)可能支持 JTAG 类型 kgdb。

关于linux - 我想通过 minicom 使用 gdb 在 arm board 上调试 vmlinux。我需要做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49109162/

相关文章:

c - 找不到 DEADLINE 调度策略

为 ARM (Raspberry Pi) 交叉编译 R

客户端服务器管道-c

linux - 如何从 CD-ROM 上刻录数据

linux串口连接cu命令

linux - 使路径中的程序更可取而不是另一个

android-emulator - 将新编译的 Linux 内核镜像加载到 android 模拟器 (1.5) 时出错

c - __pa 返回超出范围的物理地址

c - 通过快速浮点倒数高效计算 2**64/除数

c - strptime() 在 armv7l 环境中产生错误结果