c++ - Release模式下的 Qt 调试 - 所有方法均不起作用

标签 c++ qt makefile qt-creator

我正在尝试在 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 规范的路径。查看 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)

在进行更改之前检查它,然后您就会全面了解正在发生的事情:)

关于c++ - Release模式下的 Qt 调试 - 所有方法均不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34882836/

相关文章:

c++ - 从 vector 和 unordered_map 中获取三个最常出现的单词及其计数值

c++ - C++从VS2005升级到VS2012出现错误LNK1181的解决方案

QtQuick2拖动无框窗口

c - 从不兼容的指针类型传递参数 x ...

c - 如何将宏定义从 "make"命令行参数 (-D) 传递给 C 源代码?

c++ - 哪个 C++ 版本已经定义了#include iostream.h? "didn' t 必须使用 std::"

c++ - 在 C++ 中暂停 For 循环 1 秒

c++ - 窗口标题 Qt 中的小部件

c++ - 将 Qt 与 STL 和 Boost 混合使用 - 是否有任何桥梁可以让它变得简单?

c++ - 使用 g++ 构建时如何抑制来自某些文件的警告?