2013-03-25 57 views
3

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

回答

1

當你qmake你的應用程序,你可以清楚地看到哪個優化級別被應用。 (在控制檯輸出日誌中)