簡體   English   中英

在發布模式下進行Qt調試-所有方法均無效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM