Qt 5.1.0 on Windows 使用 minGW 4.8,需要很长时间才能调试
Qt 5.1.0 on Windows using minGW 4.8 taking a really long time to debug
我已经从qt项目下载页面下载并安装了适用于Windows 32位(MinGW 4.8)的Qt 5.1.0。我已经运行了安装程序,并且能够使用这些库和 minGW 4.8 32 位工具链编译和运行应用程序。
但是,我有一个大型应用程序,当我尝试调试它时(使用与 minGW 工具链捆绑的 gdb),开始运行需要花费大量时间,并且与应用程序的任何交互都需要很长时间才能完成。不是烦人的时间,而是无法使用的时间。还有其他人遇到过这个问题吗,有什么解决方案吗?
如果这有帮助,我在调试时会得到很多输出:
Temporarily disabling breakpoints for unloaded shared library "C:QtQt5.1.05.1.0mingw48_32pluginssomefoldersomelib.dll"
7.4 和 7.5 之间的某个时候引入了一个 gdb 错误,这使得它的速度要慢得多。调试 QObject 类时,速度越慢,速度越慢。
通过禁用调试帮助程序,您可以改进它,但随后您会错过局部变量和表达式中的许多宝贵信息。例如,您无法很好地显示QLists的内容等...
似乎要么:
- 从 CVS 或 CVS 构建 gdb
- 使用较旧的 GDB (7.4.1)
解决了问题。
Qt创建者在其gdb选项中具有"尝试快速入门"。它有很大帮助。
或者,您可以切换到在Windows上使用MSVC编译器。这也会将调试切换到 CDB 而不是 GDB,并完全绕过问题。如果你不喜欢MS IDE,你可以安装MSVC编译器并将其插入QtCreator而不是mingw。
附言这也为您提供了可读的核心转储,这是天赐之物。
请参阅Zeks回答的评论。在那里,他解释说,从MinGW工具链切换到Microsoft工具链(编译器,调试器)可以完全解决问题。幸运的是,Qt Creator支持Microsoft工具链,因此您无需切换IDE。
在我这样做之后,调试器启动时间现在是 4 秒,并且在应用程序崩溃时延迟为零。它还大大加快了构建速度。
作为参考,我在这里描述了我如何设置我的系统。
在更改了几个设置后,我设法显着提高了调试速度:
- 确保编译器是 gcc.exe 而不是 g++.exe 在
Qt5.1.0Toolsmingw48_32bin
文件夹中 - "工具"->选项"->"调试器->局部变量和表达式"菜单中未选中的
Use Debugging Helper
- 未选中的
Stop when qWarning() is called
和Stop when qFatal() is called
- 使用Boost Interprocess创建托管共享内存需要很长时间
- SFML RenderWindow打开窗口需要很长时间
- Kafka C++客户端需要很长时间才能收到消息
- 给定使用 C++ 或 C,我如何测量在 linux 下进行线程切换需要多长时间?可能吗?
- asio::read() 需要很长时间,使用 asio::write 没有问题
- 将线程锁定很长时间
- 正在等待在非阻塞文件描述符上长时间运行ioctl
- 即使长时间等待,C++线程也不会加入
- 连接() 在连接被拒绝时长时间挂起
- 为什么这段代码需要这么长时间才能用 g++ 编译?
- 如何在长时间运行的方法中等待信号?
- mbed 套接字连接需要很长时间
- Lambda 捕获此函数和长时间运行的函数
- std::fstream 需要很长时间才能将大数据写入.csv文件中
- 为什么与Java和Python相比,使用Cmake运行C++程序每次都需要这么长时间?
- 需要很长时间
- 在关闭应用程序期间正确关闭线程,该线程可能会运行很长时间的循环
- Qt 5.1.0 on Windows 使用 minGW 4.8,需要很长时间才能调试
- 保存调试状态以跳过长时间的计算
- visualstudio2008express在调试模式下运行c++应用程序需要很长时间(小型)