为什么我的断点在 CLion 中没有命中?
Why are my breakpoints not hit in CLion?
我正在尝试调试使用 CMake 配置创建的可执行文件
SET(CMAKE_BUILD_TYPE Debug)
但是,CLion 没有遇到任何断点。可能是什么问题?
事实证明,可执行文件是使用以下 CMake 选项编译的(在脚本的下方):
SET(CMAKE_C_FLAGS_DEBUG "-D_DEBUG")
这破坏了 CLion 的调试功能(它也破坏了 gdb
的大部分调试功能)
我今天遇到了同样的问题。我发现项目的配置没有设置为 Debug
。将配置设置为 Debug
后,所有断点都命中。
请确保您有以下配置:
- Select 菜单项
Run/EditConfigurations
- Select右边
Target
- Select
Debug
作为 Configuration
现在应该命中断点了。
我也遇到了同样的问题。自 2016.3 以来,CLion 更改了 CMake 工作流程,因此一次只允许一种配置 clion new workflow
解决方案是文件 -> 设置 -> 构建、执行、部署 -> 更改构建配置
如果这对其他人有帮助,结果我的(有点尴尬)问题是我打的是 Run
而不是 Debug
。所以在 运行 菜单中不要使用播放图标,而是选择可爱的错误图标。选择 运行 会导致它自动构建非调试版本,因此断点不起作用。一旦我开始选择错误图标,断点就像一个魅力。
我遇到了同样的问题。我注意到每次单击调试选项时,"Antimalware Service Executable" 进程都会启动。我在 windows Defender 中为 MinGW 文件夹创建了一个排除项,它运行良好...
2019.3结果是CLion/Preference/Build,Execution,Deployment/CMake/Build type/Debug.
就像minecrawler在github中说的,如果你的os是linux,你应该设置:
file/Settings/Build,执行,Deployment/Tllochains/Debugger 从捆绑的 GEB 或 gdb 到捆绑的 LLDB。
我试了,写出来了!
在我的例子中 (Linux / Ubuntu) 问题在某种程度上与挂载目录有关。
该项目最初是从 /media/username/ssd/repo/git/projectname
在 CLion 中打开的。断点总是被消息 No executable code is associated with this line
.
禁用
然后我从符号链接目录打开同一个项目
~/git
-> /media/username/ssd/repo/git
断点开始正常工作。
在我的例子中,我的 CMake 选项 CMAKE_BUILD_TYPE 已经在 CMake 设置中设置为 DEBUG。但是,它是 CMakeLists.txt 中的命令集(CMAKE_BUILD_TYPE Release),它被 git pull 合并并在执行时覆盖了 CMake 设置。我之前无法弄清楚,因为 CMake 调试控制台显示 -DCMAKE_BUILD_TYPE=Debug
当我将其更改为 set(CMAKE_BUILD_TYPE Debug) 时,再次遇到断点。
我的项目路径中有一个逗号。删除逗号为我解决了问题。
我的问题是 -ffile-prefix-map
标志。一旦我删除它,一切正常。
见https://youtrack.jetbrains.com/issue/CPP-23159 and https://youtrack.jetbrains.com/issue/CPP-15850
在我的例子中,我不得不编辑文件,以便重新编译所有内容,而不是使用缓存。
如果这对其他人有帮助:
在我的例子中,我必须在设置 -> 构建、执行、部署 -> CMake
中明确地将 -DCMAKE_BUILD_TYPE
选项设置为 Debug
在我的例子中,问题是忘记在 cmakelists 中注释掉优化选项 add_definitions(-O3)
。让编译器去发布。
我有一个不同的问题导致我的断点没有被击中。我使用 CLion 开发嵌入式应用程序和本机 MacOS 控制台应用程序。对于嵌入式工作,需要为您选择的Preferences/Toolchains设置GDB。
对于调试控制台应用程序,需要在 Preferences/Toolchains 中选择 LLDB。如果它留在 GDB 上,我的断点不起作用。在此处设置为 LLDB:
我正在尝试调试使用 CMake 配置创建的可执行文件
SET(CMAKE_BUILD_TYPE Debug)
但是,CLion 没有遇到任何断点。可能是什么问题?
事实证明,可执行文件是使用以下 CMake 选项编译的(在脚本的下方):
SET(CMAKE_C_FLAGS_DEBUG "-D_DEBUG")
这破坏了 CLion 的调试功能(它也破坏了 gdb
的大部分调试功能)
我今天遇到了同样的问题。我发现项目的配置没有设置为 Debug
。将配置设置为 Debug
后,所有断点都命中。
请确保您有以下配置:
- Select 菜单项
Run/EditConfigurations
- Select右边
Target
- Select
Debug
作为Configuration
现在应该命中断点了。
我也遇到了同样的问题。自 2016.3 以来,CLion 更改了 CMake 工作流程,因此一次只允许一种配置 clion new workflow
解决方案是文件 -> 设置 -> 构建、执行、部署 -> 更改构建配置
如果这对其他人有帮助,结果我的(有点尴尬)问题是我打的是 Run
而不是 Debug
。所以在 运行 菜单中不要使用播放图标,而是选择可爱的错误图标。选择 运行 会导致它自动构建非调试版本,因此断点不起作用。一旦我开始选择错误图标,断点就像一个魅力。
我遇到了同样的问题。我注意到每次单击调试选项时,"Antimalware Service Executable" 进程都会启动。我在 windows Defender 中为 MinGW 文件夹创建了一个排除项,它运行良好...
2019.3结果是CLion/Preference/Build,Execution,Deployment/CMake/Build type/Debug.
就像minecrawler在github中说的,如果你的os是linux,你应该设置:
file/Settings/Build,执行,Deployment/Tllochains/Debugger 从捆绑的 GEB 或 gdb 到捆绑的 LLDB。
我试了,写出来了!
在我的例子中 (Linux / Ubuntu) 问题在某种程度上与挂载目录有关。
该项目最初是从 /media/username/ssd/repo/git/projectname
在 CLion 中打开的。断点总是被消息 No executable code is associated with this line
.
然后我从符号链接目录打开同一个项目
~/git
-> /media/username/ssd/repo/git
断点开始正常工作。
在我的例子中,我的 CMake 选项 CMAKE_BUILD_TYPE 已经在 CMake 设置中设置为 DEBUG。但是,它是 CMakeLists.txt 中的命令集(CMAKE_BUILD_TYPE Release),它被 git pull 合并并在执行时覆盖了 CMake 设置。我之前无法弄清楚,因为 CMake 调试控制台显示 -DCMAKE_BUILD_TYPE=Debug
当我将其更改为 set(CMAKE_BUILD_TYPE Debug) 时,再次遇到断点。
我的项目路径中有一个逗号。删除逗号为我解决了问题。
我的问题是 -ffile-prefix-map
标志。一旦我删除它,一切正常。
见https://youtrack.jetbrains.com/issue/CPP-23159 and https://youtrack.jetbrains.com/issue/CPP-15850
在我的例子中,我不得不编辑文件,以便重新编译所有内容,而不是使用缓存。
如果这对其他人有帮助:
在我的例子中,我必须在设置 -> 构建、执行、部署 -> CMake
中明确地将-DCMAKE_BUILD_TYPE
选项设置为 Debug
在我的例子中,问题是忘记在 cmakelists 中注释掉优化选项 add_definitions(-O3)
。让编译器去发布。
我有一个不同的问题导致我的断点没有被击中。我使用 CLion 开发嵌入式应用程序和本机 MacOS 控制台应用程序。对于嵌入式工作,需要为您选择的Preferences/Toolchains设置GDB。
对于调试控制台应用程序,需要在 Preferences/Toolchains 中选择 LLDB。如果它留在 GDB 上,我的断点不起作用。在此处设置为 LLDB: