为什么我的断点在 CLion 中没有命中?

问题描述 投票:0回答:18

我正在尝试调试使用 CMake 配置创建的可执行文件

SET(CMAKE_BUILD_TYPE Debug)

但是,CLion 不会遇到任何断点。可能是什么问题?

debugging breakpoints clion
18个回答
15
投票

我今天也遇到了同样的问题。我发现项目的配置没有设置为

Debug
。将配置设置为
Debug
后,所有断点都会被命中。

请确保您有以下配置:

  • 选择菜单项
    Run/EditConfigurations
  • 选择正确的
    Target
  • 选择
    Debug
    作为
    Configuration

现在应该命中断点了。


10
投票

万一这对其他人有帮助,事实证明我的(有点尴尬)问题是我打的是

Run
而不是
Debug
。因此,在“运行”菜单中不要使用播放图标,而是选择可爱的错误图标。选择“运行”会导致它自动构建非调试版本,因此断点不起作用。一旦我开始选择错误图标,断点就发挥了作用。


6
投票

事实证明,可执行文件是使用以下 CMake 选项编译的(在脚本的下方):

SET(CMAKE_C_FLAGS_DEBUG "-D_DEBUG")

这破坏了 CLion 的调试功能(它也破坏了

gdb
的大部分调试功能)


4
投票

就我而言,我的 CMake 选项 CMAKE_BUILD_TYPE 已在 CMake 设置上设置为 DEBUG。然而,它是CMakeLists.txt中的命令集(CMAKE_BUILD_TYPE Release),它被git pull合并并在执行时覆盖了CMake设置。我之前无法弄清楚,因为 CMake 调试控制台显示 -DCMAKE_BUILD_TYPE=Debug

当我将其更改为设置(CMAKE_BUILD_TYPE Debug)时,断点再次被命中。


4
投票

如果这对其他人有帮助:

就我而言,我必须在“设置”->“构建、执行、部署”->“CMake”中显式将

-DCMAKE_BUILD_TYPE
选项设置为
Debug

My case


3
投票
我也有同样的问题。自 2016.3 起,CLion 更改了 CMake 工作流程,以便一次仅允许一项配置

clion 新工作流程

解决方案是文件 -> 设置 -> 构建、执行、部署 -> 更改构建配置


3
投票
我遇到了一个不同的问题,导致我的断点没有被命中。 我使用 CLion 开发嵌入式应用程序和本机 MacOS 控制台应用程序。 对于嵌入式工作,需要为您选择的首选项/工具链设置 GDB。

为了调试控制台应用程序,需要在首选项/工具链中选择 LLDB。 如果它留在 GDB 上,我的断点就不起作用。 此处设置为 LLDB:

enter image description here


2
投票
我的项目路径中有一个逗号。删除逗号解决了我的问题。


1
投票
2019.3,原来是CLion/Preference/Build,Execution,Deployment/CMake/Build type/Debug。


1
投票
我的问题是

-ffile-prefix-map

 标志。一旦我删除它,一切都正常。

请参阅

https://youtrack.jetbrains.com/issue/CPP-23159https://youtrack.jetbrains.com/issue/CPP-15850


0
投票
我也有同样的问题。我注意到每次单击调试选项时,“反恶意软件服务可执行文件”进程都会启动。我在 Windows Defender 中为 MinGW 文件夹创建了一个排除项,它工作得很好...


0
投票

就像minecrawler在github上说的,如果你的操作系统是linux,你应该设置:

文件/设置/构建、执行、部署/Tllochains/调试器从捆绑的 GEB 或 gdb 到捆绑的 LLDB。

我试过了,它的措辞!


0
投票
就我而言(Linux / Ubuntu),问题与安装目录有关。 该项目最初是从

/media/username/ssd/repo/git/projectname

 在 CLion 中开放的。断点始终被禁用,并显示消息 
No executable code is associated with this line

然后我从符号链接目录打开同一个项目

~/git

 -> 
/media/username/ssd/repo/git
 并且断点开始正常工作。


0
投票
就我而言,我必须编辑文件,以便再次编译所有内容,而不是使用缓存。


0
投票
就我而言,问题是忘记注释掉 cmakelists 中的优化选项

add_definitions(-O3)

。这让编译器释放。


0
投票
在CLION for RUST“当前未连接平台”的情况下,事实证明有一个授权步骤在CLION 2022.2版本上未启用。

下载正确的版本即可解决问题


0
投票
我的

target_link_options(app PRIVATE -s)

 中有 
CMakeLists.txt
,这当然删除了所有必要的符号🤦u200d♂️

来自 gcc 文档:

https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

-s 从可执行文件中删除所有符号表和重定位信息。


0
投票

-Ofast

标志是GCC(GNU编译器集合)和其他一些编译器中使用的编译器优化选项。当您使用 
-Ofast
 编译程序时,它会启用一组积极的优化选项,可以显着提高生成代码的性能。

但是,这些优化禁用了 CLion 中的断点。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.