在arm目标上使用kgdb / gdb调试内核?

时间:2018-03-12 04:39:15

标签: linux-kernel arm gdb remote-debugging kgdb

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

  • 目标(手臂32位架构)和
  • host(x86架构)

两个系统都用线连接,端口号分别为/dev/ttySAC3/dev/ttyUSB0。通过从SD卡读取图像文件vmlinux.uimg来启动目标。我想从我的主机上调试这个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. 关闭minicom。
  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.
    

    然后什么都不做..

  10. 问题:

    1. GDB continue未按预期工作。我期待最后一步(9)继续目标重启并点击断点而不是崩溃。

    2. GDB stepnext未按预期工作。单步执行直到退出sysrq_dbg_op(),没有行号信息。 "警告:无效的远程回复"。

    3. GDB'运行'也没有用。它显示一条消息"远程目标不支持运行"

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

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

    6. 这个过程有什么问题?

0 个答案:

没有答案