在“使用调试信息发布”模式下构建 Qt?

新手上路,请多包涵

有没有办法在“带有调试信息的发布”模式下构建 Qt?我的应用程序仅在“发布”模式下崩溃(在调试模式下工作正常)并且似乎问题来自 Qt(可能是 Qt 中的错误)。所以我想查看 Qt 的调试信息。

Qt docs 有 “debug” 、 “release” 但没有 “release with debug” 模式。

[更新]

我的应用程序适用于 Mingw 32 位发布/调试和 VSC++ 编译器 64 位调试。

仅在 VSC++ 64 位版本上崩溃

有小费吗 ?

原文由 Ashika Umanga Umagiliya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 533
2 个回答

更新:见下面@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))

原文由 Macke 发布,翻译遵循 CC BY-SA 4.0 许可协议

老问题,我知道。但是现在,您可以简单地使用

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 但我们需要手动将上述条件附加到 default_post.prf 对于 Qt 4.x

原文由 milianw 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题