簡體   English   中英

在“使用調試信息發布”模式下構建Qt?

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

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