0

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

target remote localhost:3333

完成后,我可以正常关闭 GDB quit。但是,我想在“远程管道”模式下使用 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。

4

1 回答 1

2

事实证明,OpenOCD 中存在与 GDB 所做更改相关的错误。这里有一点细节,并且已经提交了一个补丁,并且提供了一个解决方法:

将此添加到您的 cfg:

$_TARGETNAME configure -event gdb-detach { shutdown }

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

于 2012-12-01T19:04:57.740 回答