如何检查Qt中的优化级别?

问题描述:

I once had a problem与一个旧的遗留DLL,它导致发布崩溃,但在调试工作。降低优化级别解决了这个问题。如果我没有记错的话,那时我使用了Qt 4.7。如何检查Qt中的优化级别?

现在,在升级到Qt 5.0.1之后,再次发生同样的崩溃,但现在都在调试和发布。我发现来设置新的Qt优化级别的方式,但它似乎没有任何效果:

QMAKE_CXXFLAGS_RELEASE -= -O 
QMAKE_CXXFLAGS_RELEASE -= -O1 
QMAKE_CXXFLAGS_RELEASE -= -O2 
QMAKE_CXXFLAGS_RELEASE -= -O3 

QMAKE_CXXFLAGS_RELEASE += -O 

同样,对于

QMAKE_CXXFLAGS_DEBUG 

我怎样才能确保这些设置是有效的?我需要知道问题是否与Qt 4.7中的问题相同,或完全无关。崩溃发生在从DLL调用某个函数的时候,这个函数导致Qt 4.7版本中的问题出现高优化。

我甚至不能轻易降级到Qt的4.7,在SDK不再提供下载,所以我需要一个很老的和详细的MinGW的版本,我知道微小版本差异导致重大问题。

+0

最有可能的是,真正的问题是在代码中的其他地方,崩溃发生与否仅仅是相应标志的**副作用**(特别是,因为您现在说与Qt 5它看起来独立的设置)。你是否尝试使用valgrind和/或调试器? – 2013-03-25 12:30:24

+0

@Andreas:我使用调试器来查看崩溃发生在从DLL调用臭名昭着的函数时。在Qt 4.7中,崩溃发生在同一个地方,并且优化设置的改变解决了它。即使现在,不调用该函数也不会导致崩溃。这可能是DLL中的固有问题,不幸的是,我没有任何资源。 – vsz 2013-03-25 12:52:53

+0

是否有DLL的发行版和调试版?这可能与此有关。 – Phlucious 2013-03-25 18:15:16

当你qmake你的应用程序,你可以清楚地看到哪个优化级别被应用。 (在控制台输出日志中)