1

我从我vmlinux.uimgvmlinux朋友那里得到了。这vmlinux是使用 Linux 版本 4.14.10 构建的。我有两台机器:

  • 目标(arm 32 位架构)和
  • 主机(x86 架构)

两个系统都用线连接,端口号分别是/dev/ttySAC3/dev/ttyUSB0vmlinux.uimg通过从 sd 卡读取图像文件来启动目标。我想vmlinux从我的主机调试这个。

我遵循的步骤是:

  1. 在主机中启动 minicom。
  2. 类型

    echo ttySAC3,115200 > /sys/module/kgdboc/parameters/kgdboc in minicom.
    

    我收到“KGDB:注册的 I/O 驱动程序 kgdboc”。

  3. 类型

    echo g >/proc/sysrq-trigger in minicom
    

    我收到“sysrq DEBUG 并进入 KGDB”。

  4. 关闭迷你通。
  5. 通过主机中的终端转到 vmlinux 文件夹。
  6. 类型

    gdb vmlinux
    

    [注意:我使用的这个 gdb 是 arm 的 7.10 版本]

  7. 在 GDB 类型中

    target remote /dev/ttyUSB0
    

    它给我一个消息

    Remote debugging using /dev/ttyUSB0 0xc0d14f5 in sysrq_dbg_op()
    
  8. 在 GDB 类型中

    b do_mmap_pgoff
    

    我收到一条消息

    breakpoint 1 at xxxx: do_map_pgoff (4 location)
    
  9. 在 GDB 类型中

    cont
    

    这给了我一个信息

    Continuing.
    

    然后什么都不做。。

问题:

  1. GDBcontinue没有按预期工作。我期待最后一步(9)继续目标重启并达到断点而不是崩溃。

  2. GDBstepnext没有按预期工作。单步执行直到退出,sysrq_dbg_op()其中没有行号信息。“警告:无效的远程回复”。

  3. GDB“运行”也不起作用。它显示一条消息“远程目标不支持运行”

  4. 我如何在我放置断点的目标上调用一个模块,因为我不能同时使用 minicom 和 gdb。

  5. 冻结内核后我应该遵循的所有步骤。

这个过程有什么问题?

4

0 回答 0