0

我在 Windows 7 下使用,一切正常CMakeVC++现在,我想测试qtcreator,但我不能强制调试标志。我正在使用MinGW带有 cmake 的生成器并-DCMAKE_BUILD_TYPE=Debug在命令行上添加。

我可以使用 QTCreator 内部的 CMake 功能来生成带有-DCMAKE_BUILD_TYPE=Debug. 它编译得很好,我可以运行它。但是,我无法调试它,因为 QTCreator 抱怨它不是“可调试的可执行文件”。我还尝试使用命令行直接生成项目。

我究竟做错了什么?

4

4 回答 4

2

很难弄清楚哪里出了问题,所以我会给你一些提示:

  1. CMAKE_VERBOSE_MAKEFILE在 CMakeChace.txt 文件中设置并cmake再次运行。然后调用make cleanmake。然后检查输出并检查传递给编译器的标志。

  2. 检查 CMakeCache.txt 文件中是否有为特定构建传递给编译器的标志。检查是否为调试模式传递了 -g 和 -O0。

  3. 尝试构建一个非常简单的程序并使用 -g 和 -O0 手动编译它。然后尝试使用 gdb 和 QtCreator(作为外部应用程序)对其进行调试,并检查 QtCreator 本身或您的编译器选项是否存在问题。

于 2013-11-27T11:49:29.237 回答
2

我今天和你一样遇到了这个问题。很可能您使用的是 VS CDB 而不是 GDB。

这是我的解决方案:

(0) 从http://mingw-w64.sourceforge.net/index.php下载 MinGW 和 GCC

(1) 设置环境变量,让Qt-creator可以自动检测MinGW和GCC

设置 MINGW_DIR 将 %MINGW_DIR% 添加到 PATH

(2)重新启动Qt-creator

打开 Qt-creator -> tools->options->Build&Run->kits

手动添加“MinGW-GCC”(或您喜欢的其他名称)

检查编译器,应该自动检测 gcc

设置 Debugger ->Edit : GDB Engine 并选择 gdb.exe 的文件夹

确保未使用 CDB

于 2014-08-05T22:20:02.820 回答
1

我认为你没有做错什么。

在调试模式下使用 MSVC 时,调试符号(*.pdb 文件)在与您构建的二进制文件相同的文件夹中生成。以后可以使用它们来调试您的应用程序。

使用 MingW 时,不会生成额外的文件。当您将 CMAKE_BUILD_TYPE 配置为Debugor时RelWithDebInfo,该选项-g将添加到编译命令行。这会在二进制文件中生成调试信息。然后,您将能够使用 GDB 调试您的程序(您可以在 Qt Creator 中尝试它,它可以工作;))

您可以通过更改 CMAKE_BUILD_TYPE 值来验证这一点并检查生成的二进制文件的大小。我只是测试我的一个项目:

CMAKE_BUILD_TYPE                      Executable size
<empty>                                   1890 Ko
Release                                   1281 Ko
Debug                                    14743 Ko
MinSizeRel                                1027 Ko
RelWithDebInfo                           15859 Ko
于 2013-11-23T11:21:11.833 回答
0

我对 QtCreator 不太熟悉,但我会尝试通过解释我用来为 Eclipse CDT4 生成 makefile 的内容来提供帮助(这可能是您尝试作为 Windows IDE 的另一种选择)。

首先,您确定您的 cmake 可以生成 QtCreator makefile 吗?我问是因为至少在 Fedora 上,cmake 没有将 Qtcreator 列为选项。

在命令行上键入“cmake”应该列出可用于您的平台的生成器。QtCreator 是其中之一吗?

其次,cmake 很可能没有为您的编译器提供该选项。这并不一定意味着您将无法从该编译器调试代码。例如,我在没有设置调试标志的情况下为 Eclipse CDT 生成了文件,但仍然能够正常调试。

作为参考,这里是我用于 Eclipse CDT 的命令列表(来自项目根目录,cmakelists.txt 文件位于 src 子目录中):

mkdir eclipse-project
cd eclipse-project
cmake ../src -G "Eclipse CDT - Unix Makefiles"

然后我可以从 Eclipse 中打开项目并进行调试。我怀疑您也可以这样做,无论 cmake 是否知道如何为您的编译器启用调试。

于 2013-11-24T06:05:36.613 回答