Windows 上的 Qt 5.1.0 使用 minGW 4.8 需要很长时间才能调试

Posted

技术标签:

【中文标题】Windows 上的 Qt 5.1.0 使用 minGW 4.8 需要很长时间才能调试【英文标题】:Qt 5.1.0 on Windows using minGW 4.8 taking a really long time to debug 【发布时间】:2013-09-12 08:38:39 【问题描述】:

我已从 qt-project 下载页面下载并安装了适用于 Windows 32 位 (MinGW 4.8) 的 Qt 5.1.0。我已经运行了安装程序,并且能够使用这些库和 minGW 4.8 32 位工具链来编译和运行应用程序。

但是,我有一个大型应用程序,当我尝试调试它时(使用与 minGW 工具链捆绑的 gdb),开始运行需要大量时间,并且与应用程序的任何交互都需要很长时间去完成。不是烦人的时间,而是无法使用的时间。有没有其他人遇到过这个问题,有什么解决办法吗?

如果这有帮助,我在调试时会得到很多输出:

Temporarily disabling breakpoints for unloaded shared library "C:\Qt\Qt5.1.0\5.1.0\mingw48_32\plugins\somefolder\somelib.dll"

【问题讨论】:

【参考方案1】:

在 7.4 和 7.5 之间的某个时间点引入了一个 gdb 错误,这使得它变得更慢。在调试 QObject 类时,慢的会变得非常慢。

通过禁用调试助手,您可以改进它,但是您会错过本地变量和表达式中的许多宝贵信息。例如,您不能很好地显示 QLists 的内容等...

似乎:

从 CVS 构建 gdb 或 使用较旧的 gdb (7.4.1)

解决问题。

【讨论】:

【参考方案2】:

Qt 创建者在其 gdb 选项中有“尝试快速启动”。很有帮助。

或者您可以切换到在 Windows 上使用 MSVC 编译器。这也将您的调试切换到 CDB 而不是 GDB 并完全绕过问题。如果您不喜欢 MS IDE,您可以安装 MSVC 编译器并将其插入 QtCreator 而不是 mingw。

附:这也为您提供了可读的核心转储,这是天赐之物。

【讨论】:

为我带来了从 90 秒到 7 秒的调试启动时间。想知道午餐是不是免费的。 午餐不是免费的。事实证明,这个选项所做的只是推迟库加载,直到应用程序崩溃。因此,当应用程序崩溃并且您想找出原因时,您仍然需要等待额外的 83 秒。所以这个选项的好处是微不足道的。 我绝对记得这对我很有帮助。启用此选项后,肯定还不到 80 秒。虽然我已经开始使用 MSVC 编译器,但这并没有这个问题。 Unix 从一开始就没有任何 GDB 启动问题。顺便说一句,msvc 编译器具有剖析 Windows 上的核心转储的能力,因此您可能也想切换。 所以当你使用不同的编译器 (MSVC) 构建但继续使用相同的调试器 (gdb) 时,调试器会快速启动吗?听起来不错。 不,使用 MSVC 构建您只需使用不同的调试器 (CDB)【参考方案3】:

请参阅Zeks' answer 上的 cmets。他在那里解释说,从 MinGW 工具链切换到 Microsoft 工具链(编译器、调试器)可以完全解决问题。幸运的是,Qt Creator 支持 Microsoft 工具链,因此您无需切换 IDE。

在我这样做之后,调试器启动时间现在是 4 秒,并且在应用程序崩溃时它有零延迟。它也sped up builds很多。

作为参考,我已经描述了我如何设置我的系统here。

【讨论】:

【参考方案4】:

在更改了几个设置后,我设法显着提高了调试速度:

确保编译器是 gcc.exe 而不是 Qt5.1.0\Tools\mingw48_32\bin 文件夹中的 g++.exe 在工具->选项->调试器->本地和表达式菜单中未选中Use Debugging Helper 未选中 Stop when qWarning() is calledStop when qFatal() is called

【讨论】:

gcc 和 g++ 没有区别。它仍然是相同的编译器。您列表中的第一项是无操作。 当然,调试助手可以提高速度,但这是一个主要功能,如果没有它,在调试的同时观看 Qt 类几乎是不可能的。

以上是关于Windows 上的 Qt 5.1.0 使用 minGW 4.8 需要很长时间才能调试的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator新安装后运行一个程序后,出现错误:Error while building/deploying project dict-qt (kit: Desktop Qt 5.10.0 Mi

Windows上的Qt 5.7黑屏

如何修复 Windows 上的 Qt 控制台输出(使用 `qInstallMsgHandler` 和 `qDebug`)?

OpenGL 3.0 不适用于 Windows 上的 Qt

Qt在Windows上的调试器安装与配置

Windows XP 上的 QMediaPlayer (qt 5.3.1)