在 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 或目标设备上的任何命令!不管我输入什么(ps
、quit
、kill ...
、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?的主要内容,如果未能解决你的问题,请参考以下文章
TestDisk 之Qt creator + MinGW +Qt +gdb