在“Release with Debug Info”中构建 Qt模式?
有没有办法在“带有调试信息的发布”模式下构建Qt?我的应用程序仅在“发布”模式下崩溃(在调试模式下工作正常),似乎问题来自 Qt(可能是 Qt 中的错误)。所以我想查看 Qt 的调试信息。
Qt 文档 有“调试”、“发布”,但没有“以调试方式发布”。
[更新]
我的应用程序在 Mingw 32 位发布/调试和 VSC++ 编译器 64 位调试中运行良好。
仅在 VSC++ 64 位版本上崩溃
有任何提示吗?
Is there a way to build Qt in "Release with Debug info" mode ? My application crashes only in "release" mode (works fine in Debug mode) and seems the issue comes from Qt (may be a bug in Qt).So I want to see the debug info of Qt.
Qt docs has "debug" , "release" but not "release with debug" mode.
[Upate]
My application works fine with Mingw 32bit Release/Debug and VSC++ Compiler 64bit Debug.
Only crashes on VSC++ 64Bit Release
Any tips ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
老问题,我知道。但如今,
即使在发布模式下,您也可以简单地使用来获取调试符号。当您通过命令行使用 QMake 时,我通常这样做是为了获得带有调试信息的发布版本:
这将启用以下条件的 Qt5/mkspecs/features/default_post.prf:
甚至适用于
Qt 4.x
但我们需要手动追加将上述条件放入Qt 4.x
的default_post.prf
中Old question, I know. But nowadays, you can simply use
to get debug symbols even in release mode. When you use
QMake
via the command line, I usually do this to get a release build with debug info:this will enable below conditions of
Qt5/mkspecs/features/
default_post.prf:which would even work for
Qt 4.x
but we would need to manually append above conditions intodefault_post.prf
forQt 4.x
我在 qmake 文件中使用它来使用 debuginfo 构建我的发行版本:
这样您至少可以检查代码中是否发生崩溃。
不支持使用此模式构建 Qt,请参阅此 bug。
您只能通过更改 vcproj 文件或 Makefile 来手动完成此操作,如 Macke 的答案中所示。
I use this in my qmake files to build my release versions with debuginfo:
This way you can at least check if the crash happens in your code.
Building Qt with this mode is not supported, see this bug.
You can only do it manually by changing vcproj-files or Makefiles like in the answer of Macke.
在Qt5中,当调用
configure
时,只需添加选项-force-debug-info
In Qt5, when calling
configure
, just simply add option-force-debug-info
更新:请参阅下面@milanw 的回答。现在 qmake 直接支持这一点
我们使用 qmake 生成 vcproj 文件来构建 Qt。我编写了一个 python 脚本(但 sed 也很好)来更改 vcproj 文件以在发行版中使用调试信息进行构建。
对于 Qt 和我们的应用程序之间来回的堆栈跟踪来说,拥有调试信息确实非常宝贵。
这是相关的片段:
Update: See @milanw's answer below. This is now supported directly in qmake
We use qmake to generate vcproj files to build Qt. I wrote a python script (but sed is fine too) to change the vcproj-files to build with debug information in release too.
Having debug info is indeed invaluable for stack traces that go back and forth between Qt and our app.
Here's the relevant snippet:
我想补充一下,在 Qt 4.8 中,这个 bug 似乎已经被修复了。我将这两行复制到我的 .pro 文件中,它的效果非常好。
May I add that in Qt 4.8, this bug seems to have been fixed. I copied those two lines into my .pro file, and it worked like a charm.
看起来您需要调整
QMAKE_CFLAGS_RELEASE< /code>
变量。如果是 gcc,您只需添加 -g 选项即可添加调试信息。
Looks like you need to adjust
QMAKE_CFLAGS_RELEASE
variable. In case of gcc you just need to add -g option to add debug info.对于linux用户
./configure -prefix /opt/qt -release -force-debug-info -opensource -nomaketests -no-avx -no-avx2 -no-avx512
make V=1 -j8
make install
ps:cat /proc/cpuinfo, 如果你有 avx avx2 avx512 然后删除 -no-avx -no-avx2 -no-avx512
for linux user
./configure -prefix /opt/qt -release -force-debug-info -opensource -nomake tests -no-avx -no-avx2 -no-avx512
make V=1 -j8
make install
ps:cat /proc/cpuinfo, if you have avx avx2 avx512 then remove -no-avx -no-avx2 -no-avx512
只需在 Qt Creator 的项目选项卡中选择配置文件构建,而不是调试或发布构建。它会向 qmake 调用添加很多参数。
Just select Profile build in the projects tab of Qt Creator rather than the debug or release builds. It will add a lot of arguments to the qmake call.