gdborig.exe 在调试 QT 5.8 并在窗口中打开 QFileDialog 时随机崩溃

gdborig.exe crashes randomly when debugging QT 5.8 and opening QFileDialog in windows

本文关键字:QFileDialog 随机 崩溃 调试 exe QT gdborig 窗口      更新时间:2023-10-16

我正在使用Qt 5.8,clion作为IDE,用捆绑的cmake 3.7.2制成。 使用 Mingw-w64,x86_64-6.3.0-posix-she-rt_v5-rev0,它与 GDB 7.11.1 捆绑在一起。 使用 msys2 的 Qt5.8 版本据说是用相同版本的 mingw-64 编译的(无法让 QT 在我的系统上编译,所以这是我唯一的选择)。这个问题似乎与我具体正在做的事情无关,我经常会有运行良好的代码,没有崩溃、段错误或其他什么,当我在调试器中做同样的事情时,它会挂起 30 秒试图打开QFileDialog,慢慢加载 gui,好像它会工作一样,然后迅速崩溃说"Gdborig.exe已经停止工作"。

不确定我还可以提供哪些其他上下文,再次出现,仅在执行以下调用后出现:

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

但是我使用什么静态方法并不重要,同样的事情发生在getOpenFileName上,getOpenFileNames. 严格来说,崩溃似乎没有任何模式,有时我可以克服它,有时我无法克服它。 我最初有一个假设,因为当问题首次出现时我正在使用-pg -Og标志,这些标志导致了问题,但此后我删除了这两个标志,问题仍然存在。

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