每当我按下 control + c 时,远程 GDB 就会断开连接

Remote GDB disconnects whenever I press control + c

我正在远程调试 Stellaris Launchpad。我使用 OpenOCD 连接到 stellaris,然后将 GDB 连接到 openOCD 提供的服务器。我使用 Open On-Chip Debugger 0.10.0-dev-00002-g79fdeb3 (2015-07-09-23:28)。 GDB 是来自 arm-gcc-none-eabi 的 4_9-2015q1 版本。 我这样调用 openOCD:

/usr/local/bin/openocd --file \
/usr/local/share/openocd/scripts/board/ek-lm4f120xl.cfg \
>> openocdLog.txt 2>&1 &

然后 GDB 像这样:

arm-none-eabi-gdb proj//debug/exec -x gdb//gdb.script

gdb/gdb.脚本包含:

set remotetimeout 10000
target extended-remote :3333
monitor reset halt
load
monitor reset init

问题是每当我按下 control+c 键时,GDB 就会断开连接。通常这会停止远程,但 GDB 只是断开连接:

(gdb) cont
Continuing.
^CError detected on fd 6
Remote communication error.  Target disconnected.: Interrupted system call.
(gdb) 

OpenOCD 有以下内容要说,这是在 GDB 启动时:

Warn : keep_alive() was not invoked in the 1000ms timelimit. GDB alive packet not sent! (1258). Workaround: increase "set remotetimeout" in GDB

这很奇怪,考虑到 gdb/gdb.script 文件将 remotetimeout 强制设置为非常大的数字。

当按下 control+c openOCD 时说:

Debug: 2602 5089 hla_interface.c:119 hl_interface_quit(): hl_interface_quit

那么,我该如何解决这个问题?如何让 GDB 在按下 control+c 时停止远程而不是断开连接?

问题是 OpenOCD 太前沿了。我在使用 0.6.1 时遇到问题,但 OpenOCD 0.7.0 版运行良好。