【问题标题】:Why does GDB hang when using OpenOCD in remote pipe mode?为什么在远程管道模式下使用 OpenOCD 时 GDB 会挂起?
【发布时间】:2012-11-21 13:00:15
【问题描述】:

我正在使用 GDB 和 OpenOCD 在 Windows 上的 STM32F4DISCOVERY 板上调试一个简单的程序。这在单独启动 OpenOCD 并使用 TCP/IP 连接到它时工作正常,如下所示:

target remote localhost:3333

完成后,我可以正常使用quit 关闭 GDB。但是,我想在“远程管道”模式下使用 GDB,而不是需要手动启动和停止 OpenOCD。这对我来说似乎是一个有点理想的配置。但是,当我这样做时,我无法退出 GDB,因为它会在我尝试退出时挂起。

OpenOCD 日志文件显示 GDB 连接已断开:

Info : dropped 'gdb' connection

但 GDB 永远不会退出:

(gdb) quit
A debugging session is active.

        Inferior 1 [Remote target] will be detached.

Quit anyway? (y or n) y
Detaching from program: yagarto_sample.elf, Remote target
Ending remote debugging.

disconnect 命令同样挂起,不再返回。甚至 Ctrl-C 都不会唤醒 GDB。

【问题讨论】:

    标签: gdb openocd


    【解决方案1】:

    事实证明,OpenOCD 中存在与 GDB 所做更改相关的错误。有点细节是here,已经提交了patch,提供了解决方法:

    将此添加到您的配置文件中:

    $_TARGETNAME configure -event gdb-detach { shutdown }
    

    我测试了这个解决方法,它确实有效,但最后,管道模式在 Windows 上太慢了,我选择使用 TCP,尽管它不太方便。

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多