如何使用 gdb 调试 GUI 程序

Posted

技术标签:

【中文标题】如何使用 gdb 调试 GUI 程序【英文标题】:how to use gdb to debug a GUI program 【发布时间】:2016-02-23 20:04:02 【问题描述】:

我知道如何调试控制台程序,但是如果程序有 GUI 怎么办? 比如有个Calc图标,我往下推的时候会调用一些方法。 我想知道它会调用什么方法。我有源代码,但不知道哪个文件对应于什么,并且想回溯如果我单击该图标将执行哪些代码。

【问题讨论】:

如果您没有源代码级调试,典型的 GUI 框架将是一场噩梦。获取源代码,(理想情况下,是一个“真正的”IDE 调试器:)。 【参考方案1】:

从概念上讲,调试 GUI 应用程序和控制台应用程序之间没有任何区别——它们都归结为过程式编程——某些操作调用特定的函数。动作的触发是您按下 GUI 上的按钮还是在控制台中输入命令都没有区别。您可以对它们都使用调试器(可视化或命令行)。

如果您有源代码,并且知道触发机制是什么,那么应该很容易在源代码中查看触发器调用了哪些函数(例如,不在运行时)。您将问题标记为Qt,它使用connect 函数将“信号”(事件)连接到其他信号或“插槽”。这本质上是将回调函数与特定事件相关联,因此搜索您的源代码将是一个很好的起点。

【讨论】:

以上是关于如何使用 gdb 调试 GUI 程序的主要内容,如果未能解决你的问题,请参考以下文章

QtCreator:是不是可以调试远程 GUI 应用程序? (广发银行)

如何使用 gdb 在目标 ARM MCU 上调试闪存程序

GDB调试以及GUI工具Insight的使用

GDB 使用 clone() 调试应用程序

使用 GDB 调试多进程程序

如何在使用 mingw gdb 进行调试时为程序提供输入