[英]Build Qt in “Release with Debug Info” mode?
有沒有辦法在“Release with Debug info”模式下構建Qt? 我的應用程序僅在“發布”模式下崩潰(在調試模式下工作正常),似乎問題來自Qt(可能是Qt中的錯誤)。所以我想看看Qt的調試信息。
Qt docs有“debug”,“release”但不是“release with debug”模式。
[Upate]
我的應用程序適用於Mingw 32位Release / Debug和VSC ++ Compiler 64bit Debug。
僅在VSC ++ 64Bit Release上崩潰
有小費嗎 ?
老問題,我知道。 但是現在,你可以簡單地使用
CONFIG += force_debug_info
即使在發布模式下也能獲得調試符號。 當您通過命令行使用QMake
,我通常會這樣做以獲得帶有調試信息的發布版本:
qmake CONFIG+=release CONFIG+=force_debug_info path/to/sources
這將啟用Qt5/mkspecs/features/
default_post.prf的以下條件:
force_debug_info|debug: CONFIG += debug_info
force_debug_info {
QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
}
甚至可以用於Qt 4.x
但我們需要手動將上述條件附加到Qt 4.x
default_post.prf
中
我在我的qmake文件中使用它來使用debuginfo構建我的發行版本:
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
這樣,您至少可以檢查代碼中是否發生了崩潰。 不支持使用此模式構建Qt,請參閱此錯誤 。 你只能通過在Macke的答案中更改vcproj文件或Makefile來手動完成。
在Qt5中,調用configure
,只需添加選項-force-debug-info
更新:請參閱下面的@milanw的回答。 現在可以直接在qmake中支持
我們使用qmake生成vcproj文件來構建Qt。 我寫了一個python腳本(但是sed也很好)來修改vcproj文件,以便在發行版中使用調試信息進行構建。
調試信息對於在Qt和我們的應用程序之間來回傳遞的堆棧跟蹤確實非常寶貴。
這是相關的片段:
for root, dirs, files in os.walk( qt_build_dir ):
for f in files:
if not f.endswith('.vcproj'):
continue
output = []
with open(pj(root, f), 'r') as file:
for line in file.readlines():
line = line.strip()
if 'DebugInformationFormat="0"' == line:
output.append('\t\t\t\tDebugInformationFormat="3"')
elif 'GenerateDebugInformation="false"' == line:
output.append('\t\t\t\tGenerateDebugInformation="true"')
else:
output.append(line)
with open(pj(root, f), 'w') as file:
file.write('\n'.join(output))
不支持使用此模式構建Qt,請參閱此錯誤。 你只能通過在Macke的答案中更改vcproj文件或Makefile來手動完成。
我可以在Qt 4.8中添加,這個錯誤似乎已得到修復。 我將這兩行復制到我的.pro文件中,它就像一個魅力。
看起來您需要調整QMAKE_CFLAGS_RELEASE
變量。 對於gcc,您只需添加-g選項即可添加調試信息。
只需在Qt Creator的項目選項卡中選擇Profile build,而不是調試或發布版本。 它會為qmake調用添加很多參數。
qmake.exe someproject.pro -spec win32-msvc "CONFIG+=qml_debug"
"CONFIG+=qtquickcompiler" "CONFIG+=force_debug_info" "CONFIG+=separate_debug_info"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.