我有一个使用QT的应用程序,它可以在某些机器(Windows 7 64bits,Windows Server标准32bits)和其他机器上工作(Windows Server 2012 R2 R2 64Bits,Windows 10 Pro 64bits)它给出了SEH例外。我一直在尝试调试一段时间,但我不知道如何找到根。
这个例外不会被尝试/捕获捕获,我无法使用__try/__,除非它不能与第一个一起使用,而且它说它只能在不需要的代码中使用放松(如果我没记错的话)。
Problem signature:
Problem Event Name: APPCRASH
Application Name: gpeh_parser.exe
Application Version: 0.0.0.0
Application Timestamp: 584051a0
Fault Module Name: Qt5Core.dll
Fault Module Version: 5.1.1.0
Fault Module Timestamp: 521a52ae
Exception Code: c0000005
Exception Offset: 00023087
OS Version: 6.3.9600.2.0.0.272.7
Locale ID: 11274
Additional Information 1: 5861
Additional Information 2: 5861822e1919d7c014bbb064c64908b2
Additional Information 3: 01d7
Additional Information 4: 01d7340064827245f2249cd1f1a7c264
我也尝试使用windbg,但找不到问题的根源(这可能是由于我对此的很少的经历)。
我还能做什么才能找到发生的事情?
我发现编译器上启用/EHa
(结构化异常处理)可以解决我的问题,因为然后我可以使用默认的异常处理代码(try/catch)。
将其附加到我的.pro做到了:
win* {
QMAKE_CXXFLAGS_EXCEPTIONS_ON = /EHa
QMAKE_CXXFLAGS_STL_ON = /EHa
}