[英]Qt debugging in release mode - all methods not working
我正在嘗試在QtCreator
中使用MinGW
構建我的Qt
應用程序,以嘗試調試僅發布的崩潰。
這是我放入.pro
文件的內容(也嘗試將其直接放入qmake.conf
):
QMAKE_CFLAGS_RELEASE += -g
QMAKE_CXXFLAGS_RELEASE += -g
QMAKE_CXXFLAGS += -g
以及嘗試
QMAKE_CFLAGS_RELEASE += -ggdb
QMAKE_CXXFLAGS_RELEASE += -ggdb
QMAKE_CXXFLAGS += -ggdb
我像這樣單獨或一起嘗試了它們:
QMAKE_CFLAGS_RELEASE += -g
QMAKE_CXXFLAGS_RELEASE += -g
QMAKE_CXXFLAGS += -g
QMAKE_CFLAGS_RELEASE += -ggdb
QMAKE_CXXFLAGS_RELEASE += -ggdb
QMAKE_CXXFLAGS += -ggdb
我還手動編輯了生成的Makefile
(准確地說是Makefile.Release
,並檢查了Makefile.Debug
以防萬一),以刪除NO_DEBUG
標志(我不知道為什么將其放置在其中),並確保-g
和-ggdb
標志在那里。
所有這些的結果是,該應用程序的構建時間幾乎增加了兩倍,但是它的大小與以前完全相同,並且沒有任何調試符號,並且嘗試對其進行調試也沒有成功。
我還可以做些什么? 我知道這是可能的,但是尋找其他答案只能使我使用那些標志,而這根本沒有幫助(只會使構建變慢)
在qmake.conf中(無法回憶現在的位置),默認行為設置為:
QMAKE_LFLAGS_RELEASE = -Wl,-s
-s表示鏈接器刪除了符號信息。 因此,除了已設置的標志外,還需要清除QMAKE_LFLAGS_RELEASE中的標志(或覆蓋)。 在您的情況下,只需將其設置為空即可,因此在.pro文件中添加:
QMAKE_LFLAGS_RELEASE =
更多說明
如果將行message(QMAKESPEC: $$QMAKESPEC)
到您的.pro文件,則在運行qmake時,您會看到make spec的路徑。 查看qmake.conf文件(它將包含),並逐步進行操作。
假設您使用的是Windows(因為我沒有在Qt 5.5.1的linux make規范中看到-Wl,-s選項),那么問題文件是: <path-to-qt>/5.5/gcc_64/mkspecs/win32-g++/qmake.conf
無論如何,我沒有看到任何其他有用的標志集(我使用的是Linux,因此只能通過肉眼檢查。但是,如果您擔心,請將以下內容添加到您的.pro文件中:
message(QMAKE_LFLAGS_RELEASE: $$QMAKE_LFLAGS_RELEASE)
在進行更改之前先對其進行檢查,然后您將了解正在發生的事情的完整情況:)
我剛剛弄清楚了,然后才看到@code_fodder的回答。 看起來@code_fodder本質上是正確的,但是我要添加更多詳細信息以反映對我有幫助的精確步驟。
我在Qt Creator項目設置中指定了qmake
參數,如下所示:
QMAKE_CXXFLAGS+=-g QMAKE_LFLAGS_RELEASE-=-Wl,-s
這實質上是將-g
添加到編譯器標志中,並從鏈接器標志中刪除-Wl,-s
(這將除去所有符號)。 然后我運行qmake
並進行了完全重建。 之后,調試工作就可以了,就像您期望的那樣,可以進行發布:由於優化,以某種隨機的方式在各行之間跳轉,但至少可以。
我在64位Windows 7系統上使用捆綁了MinGW的32位Qt 5.5.1,如果有幫助的話。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.