【发布时间】:2021-06-14 22:51:30
【问题描述】:
我一直在尝试在 CLion 中调试我的程序,但无法弄清楚为什么我设置的断点都没有被命中。我使用 MinGW 作为工具链。在我切换到 Visual Studio 工具链后,调试器神秘地工作了。为什么会这样,我该如何解决这个问题?我需要调试器与 MinGW 一起工作。以下是我设置的工具链的更多详细信息: 我写了这个小程序:
#include <stdio.h>
int main() {
int a = 10;
a += 1;
printf("Hello, %d!\n", a);
return 0;
}
我在 main() 声明之后的每一行都设置了一个断点。这是生成的默认 CMake 文件:
cmake_minimum_required(VERSION 3.17)
project(practice_1 C)
set(CMAKE_C_STANDARD 99)
add_executable(practice_1 main.c)
这里是 MinGW 工具链集:
当我在调试模式下在 CLion 中运行它时,调试器不起作用。它直接到最后,在控制台中打印该消息。
如果我使用 Visual Studio 设置设置工具链,则一切正常。所以我这样做:
现在我可以使用 Visual Studio 调试器了。它到达断点,我可以调试我的程序。但我需要使用其他设置。如何解决此问题并使用 GDB 调试器?我尝试在 CMake 文件中添加this,但没有成功。
这是我在全部重建后在控制台中得到的构建文本:
====================[ Clean | Debug ]===========================================
"C:\Program Files\JetBrains\CLion 2020.3.3\bin\cmake\win\bin\cmake.exe" --build "D:\Practice\practice_1\cmake-build-debug" --target clean -- -j 9
Clean finished
====================[ Build | all | Debug ]=====================================
"C:\Program Files\JetBrains\CLion 2020.3.3\bin\cmake\win\bin\cmake.exe" --build "D:\Practice\practice_1\cmake-build-debug" --target all -- -j 9
[ 50%] Building C object CMakeFiles/practice_1.dir/main.c.obj
[100%] Linking C executable practice_1.exe
[100%] Built target practice_1
构建完成
【问题讨论】:
-
您是否检查过构建日志以确认使用了
-g开关?发布构建日志(来自 rebuild all)可能会有用。 -
@Clifford 我不确定该怎么做。我找到了 Rebuild all 的按钮并点击它,然后项目得到了重建,并显示了这条消息:
"C:\Program Files\JetBrains\CLion 2020.3.3\bin\cmake\win\bin\cmake.exe" --build "D:\Practice\practice_1\cmake-build-debug" --target all -- -j 9。这是你的意思吗? -
我对 CLion 甚至 CMake 都不熟悉。我想看到的是编译器和链接器命令行以及在构建期间发出的诊断信息。我会避免使用任何隐藏这些原始信息的 IDE 或构建系统。一些 IDE 将这些内容隐藏在日志文件中,而不是在窗口中显示。也许在终端窗口中(查看 CLion 的屏幕截图)?
-
@Clifford 我在问题末尾添加了控制台中的全文。这就是我重建所有内容时显示的所有内容。希望能帮助到你。但是假设我没有打开
-g开关。我该如何实际使用它? -
“我尝试添加这个” 链接添加了 -g 开关;我正在寻找一种方法来验证它是否确实在这样做。 "Building C object ..." 中发生的任何事情都是您需要访问的。