【问题标题】:Why are my breakpoints not hit in CLion?为什么我的断点没有在 CLion 中命中?
【发布时间】:2016-03-09 10:21:46
【问题描述】:

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

SET(CMAKE_BUILD_TYPE Debug)

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

【问题讨论】:

  • 谢谢,您的问题解决了我的问题,添加 SET(CMAKE_BUILD_TYPE Debug) 对我有用。
  • 这里也一样!谢谢!
  • 我已经尝试了这些解决方案中的每一种,但它们都不起作用。我的程序并没有在我的断点处停止。使用 Clion 几乎毫无意义,这很可悲,因为我喜欢 JetBrains 软件用于我所做的所有其他类型的编程。
  • 我的问题似乎与 catalina 上 lldb 的这个问题有关:github.com/microsoft/vscode-cpptools/issues/3829。但这正在处理vscode上的问题。不知道如何用 clion 重现解决方案。

标签: debugging breakpoints clion


【解决方案1】:

万一这对其他人有帮助,原来我(有点尴尬)的问题是我打的是Run而不是Debug。所以在运行菜单中不要使用播放图标,而是选择可爱的错误图标。选择 Run 会导致它自动构建非调试版本,因此断点不起作用。一旦我开始选择错误图标,断点就像一个魅力。

【讨论】:

    【解决方案2】:

    如果这对其他人有帮助:

    在我的情况下,我必须在 Settings -> Build, Execution, Deployment -> CMake 中明确地将 -DCMAKE_BUILD_TYPE 选项设置为 Debug

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 哦,伙计!太感谢了!它解决了我的问题。您的答案是最被低估的答案之一!
      • 对我来说同样的问题。有人知道为什么逗号会破坏吗?
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        我今天遇到了同样的问题。我发现项目的配置没有设置为Debug。将配置设置为Debug后,所有的断点都会被命中。

        请确保您具有以下配置:

        • 选择菜单项Run/EditConfigurations
        • 选择右边Target
        • 选择DebugConfiguration

        现在断点应该被命中了。

        【讨论】:

        • 在配置中我没有看到调试作为一个选项。您能否建议如何在配置中添加调试选项。
        • @Vishal 你可以在Creating and Editing Run/Debug Configurations找到步骤
        • CLion 文档非常晦涩难懂。我面临着同样的问题,并准备进行一次长途旅行,以了解配置的理念、与 CMake 和调试器的关系。
        【解决方案6】:

        我也有同样的问题。自 2016.3 以来,CLion 更改了 CMake 工作流程,因此一次只允许一种配置clion new workflow

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

        【讨论】:

        • 2019.2中路径略有不同:文件->设置->构建、执行、部署->CMake
        【解决方案7】:

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

        SET(CMAKE_C_FLAGS_DEBUG "-D_DEBUG")
        

        这破坏了 CLion 的调试功能(它也破坏了gdb 的大部分调试功能)

        【讨论】:

        • 如果你需要附加你自己的调试标志,这是修复:: set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
        • @mstrap 如果这是问题所在,解决方法是什么?直接删除?
        【解决方案8】:

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

        【讨论】:

          【解决方案9】:

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

          【讨论】:

            【解决方案10】:

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

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

            我试过了,它的措辞!

            【讨论】:

              【解决方案11】:

              在我的情况下(Linux / Ubuntu),问题与安装目录有关。 该项目最初是从/media/username/ssd/repo/git/projectname 在 CLion 中打开的。断点始终通过消息 No executable code is associated with this line 禁用。

              然后我从符号链接目录打开了同一个项目 ~/git -> /media/username/ssd/repo/git 并且断点开始正常工作。

              【讨论】:

                【解决方案12】:

                我的问题在于-ffile-prefix-map 标志。删除后,一切正常。

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

                【讨论】:

                  【解决方案13】:

                  在我的情况下,我必须编辑文件,以便再次编译所有内容,而不是使用缓存。

                  【讨论】:

                    【解决方案14】:

                    就我而言,问题是忘记在 cmakelists 中注释掉优化选项 add_definitions(-O3)。这让编译器去释放。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2014-08-28
                      • 1970-01-01
                      • 2021-07-30
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多