为什么在远程管道模式下使用OpenOCD时GDB会挂起?

时间:2012-11-21 13:00:15

标签: gdb openocd

我正在使用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。

1 个答案:

答案 0 :(得分:1)

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

将此添加到您的cfg:

$_TARGETNAME configure -event gdb-detach { shutdown }

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