我正在尝试在 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/