在 Qt Creator 中使用 GDB 时如何终止 gdbserver?

Posted

技术标签:

【中文标题】在 Qt Creator 中使用 GDB 时如何终止 gdbserver?【英文标题】:How to terminate gdbserver when using GDB inside Qt Creator? 【发布时间】:2014-09-08 20:06:58 【问题描述】:

我有一个与this SO question 中的问题非常相似的问题,但有一点不同:我是从 Qt Creator 中运行 GDB,而不是从终端调用它,所以没有终端可以直接执行诸如monitor exit 之类的命令,或者让gdbserver`停止运行。

还有一个问题:一旦我调用 gdbserver 命令开始侦听端口(这是通过 Minicom 完成的),我只需松开 Minicom 或目标设备上的任何命令!不管我输入什么(psquitkill ...Ctr+C 等),一旦调用了启动gdbserver 的命令,Minicom 中将不会接受任何命令。

所以遇到这种特殊的问题/情况,如何在 gdbserver 监听时终止它?

【问题讨论】:

【参考方案1】:

在 QtCreator 中,如果您单击 Window -> Views -> Debugger Log,您可以访问 gdb 控制台。从那里,使用所显示面板的左窗格,您可以将命令发送到gdb 并在右窗格中读取输出。我假设您也可以发出monitor exit 以使gdbserver 停止运行。

无论如何,在正常情况下,一旦您在 QtCreator 中停止调试,gdbserver 就会自动终止(至少在我的 PC 上它是这样工作的)。

【讨论】:

【参考方案2】:

哈哈,我真傻!似乎有人被诱导去理解系统是如何错误地工作的,因此,我做错了一切:)

实际上,Qt Creator 似乎自己处理gdbserver;它只是在 Qt Creator 将控制它的目标设备上拥有一个gdbserver 的问题,所以只需按“在调试模式下运行”并继续(程序完成后它将自动关闭gdbserver)。我可以通过阅读 Morix Dev 提到的gdb 控制台来验证这一点。

实际的问题是,虽然我必须使用带有 Qt Creator 的 GDB + gdbserver,就像只使用终端/命令行一样:必须在运行命令的目标内启动 gdbserver

gdbserver hostip:port app-name

然后在调试模式下在Qt Creator中运行应用程序,但似乎我弄错了;只有在终端中使用所有 GDB 系统时才需要这个“两部分过程”。所以发生的事情是 Qt Creator 会做的很好,当我试图关闭在目标中运行的 gdbserver 时,我会发现自己遇到了上述问题。

【讨论】:

以上是关于在 Qt Creator 中使用 GDB 时如何终止 gdbserver?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 qt creator 中为 cdb 编写调试助手?

无法在 Qt Creator 中启动 gdb.exe

TestDisk 之Qt creator + MinGW +Qt +gdb

Qt Creator - GDB 的选定版本不支持 Python 脚本

Qt Creator 无法启动调试器

将 Qt Creator 与 Microsoft 工具链一起使用时是不是存在严重问题? [关闭]