c++ - 在 Windows 中调试 QT 5.8 和打开 QFileDialog 时,gdborig.exe 随机崩溃

标签 c++ windows qt gdb qt5

我正在使用 Qt 5.8,将 clion 作为 IDE,使用捆绑的 cmake 3.7.2 制作。使用 Mingw-w64、x86_64-6.3.0-posix-seh-rt_v5-rev0,它与 GDB 7.11.1 捆绑在一起。使用 msys2 的 Qt5.8 版本应该是用相同版本的 mingw-64 编译的(无法让 QT 在我的系统上编译,所以这是我唯一的选择)。这个问题似乎与我正在做的具体事情无关,我通常会有完美运行的代码,没有崩溃、段错误或其他任何东西,当我在调试器中做同样的事情时,它会挂起 30 秒试图打开 QFileDialog,缓慢加载图形用户界面,就好像它可以正常工作一样,然后迅速崩溃并显示“Gdborig.exe 已停止工作”。

不确定我还能提供什么其他上下文,同样,只有在执行以下调用后才会出现:

QString fileName = QFileDialog::getSaveFileName(m_parent, QObject::tr("Save File"), QString(), QObject::tr("*");

但不管我使用什么静态方法,getOpenFileNamegetOpenFileNames 都会发生同样的事情。严格来说崩溃似乎没有任何模式,有时我可以通过它,有时我不能。我最初有一个假设,因为当问题第一次出现时我使用了 -pg -Og 标志,所以这些标志导致了问题,但我已经删除了这两个标志并且问题仍然存在。

最佳答案

我在其他完美的应用程序中看到了类似的行为,我能够通过添加 QFileDialog::DontUseNativeDialog 作为 QFileDialog 调用的最终参数来解决这个问题。 所以我认为,这是 native Windows 库的 COM 公寓问题。但我不得不承认,这是一个非常大胆的猜测。

关于c++ - 在 Windows 中调试 QT 5.8 和打开 QFileDialog 时,gdborig.exe 随机崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44662971/

相关文章:

c - 唤醒Windows sleep 模式的C函数(NOT C++,C#)

c++ - 访问另一个 QThread 中的对象成员

c++ - QDomDocument - 如何从 QString 创建?

c++ - const char* 和 char* 的参数类型无效

windows - Windows是否为应用程序提供单调递增的时钟

c - OBJECT_ATTRIBUTE 结构中的 ObjectName(parameter) 指的是什么?

c++ - LINUX 或 WINDOWS 如何获取操作系统信息?

C++:调用临时对象的构造函数

c++ - 提升分析结构的精神

c++ - 与 DrawText 函数冲突