我试图找出我的Qt应用程序崩溃的原因,调试没有包含太多的可用信息,因此很难找到原因.在使用断点之后,我发现最接近崩溃的可能是在w.show()
调用时(应用程序的GUI在任何按钮或任何东西出现之前都会出现)。我的主要功能就是:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
// disable Window's maxminize button
const Qt::WindowFlags flags = w.windowFlags() ^ Qt::WindowMaximizeButtonHint;
w.setWindowFlags(flags);
w.show();
return a.exec();
}
当到达w.show()
的行时,应用程序启动(但不正确,如我前面提到的),几分钟后,我得到了一个SEGFAULT,调试器如下所示:
我怎么才能解决这个问题?我已经在这几天了,试图让调试器给出更多的信息,以便我可以追溯SEGFAULT
的原因,但是没有像这样的调试器信息,我不知道该怎么做。
我的Qt版本:
发布于 2017-08-18 17:10:05
找到解决方案了!
希望它对任何有同样问题的人都有用:
在调试消息中,我发现崩溃是由GBIEH.dll
dll造成的。在谷歌上搜索它,我发现它与网上银行有关(我想当我的应用程序试图使用那个dll时,IB的应用程序把它当作一种攻击,因此我猜这是崩溃的原因)。我刚刚删除了网上银行程序,应用程序运行良好。
发布于 2017-08-17 18:28:34
如果你不能提供一个MCVE,有多种方法来解决这样的问题
QApplication::processEvents()
,请考虑删除它。我之所以推荐Linux,是因为gdb很棒,而且cdb在这方面做得很糟糕。如果您有VS enterprise,您也可以尝试它的调试器。
祝好运。
发布于 2017-08-17 19:23:17
原代码中有问题的部分(固定的):
// disable Window's maximize button (use bitwise [and-not]&~ and not [xor]^)
const Qt::WindowFlags flags = w.windowFlags() &~ Qt::WindowMaximizeButtonHint;
w.setWindowFlags(flags);
也可以通过以下方式达到同样的效果:
w.setWindowFlag(Qt::WindowMaximizeButtonHint, false);
https://stackoverflow.com/questions/45742471
复制相似问题