【问题标题】:How to terminate gdbserver when using GDB inside Qt Creator?在 Qt Creator 中使用 GDB 时如何终止 gdbserver?
【发布时间】:2014-09-08 20:06:58
【问题描述】:
我有一个与this SO question 中的问题非常相似的问题,但有一点不同:我是从 Qt Creator 中运行 GDB,而不是从终端调用它,所以没有终端可以直接执行诸如monitor exit 之类的命令,或者让gdbserver`停止运行。
还有一个问题:一旦我调用 gdbserver 命令开始侦听端口(这是通过 Minicom 完成的),我只需松开 Minicom 或目标设备上的任何命令!不管我输入什么(ps、quit、kill ...、Ctr+C 等),一旦调用了启动gdbserver 的命令,Minicom 中将不会接受任何命令。
所以遇到这种特殊的问题/情况,如何在 gdbserver 监听时终止它?
【问题讨论】:
标签:
qt
gdb
qt-creator
gnome-terminal
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 时,我会发现自己遇到了上述问题。