CLion 2025.2 Help

调试器选项

在 CLion 中,您可以使用 LLDB 在 macOS/Linux 上调试 C/C++ 可执行文件,并使用 GDB 在 Windows/Linux 上调试(在 macOS 上使用 GDB 调试 仅适用于自定义 GDB 二进制文件)。 此外,在 Windows 上还有一个 基于 LLDB 的 MSVC 工具链调试器

当前捆绑调试器的版本:

  • Windows 的 GDB v15.2(不支持 Windows ARM64 的本地调试)

  • Linux 的 GDB v15.2

  • macOS 和 Linux 的 LLDB v19.1.3

  • Windows 上 MSVC 工具链的 LLDB v9.0.0

您还可以使用自定义 GDB 二进制文件,支持的版本为 7.8.x-14.1。

在调试器之间切换

  1. 转到 设置 | 构建、执行、部署 | 工具链

  2. 在右侧窗格的 调试器 字段中,为当前工具链选择调试器:

    选择调试器列表

调试器数据视图

设置 | 构建、执行、部署 | 调试器 | 数据视图 | C/C++ 对话框中,您可以自定义 C/C++ 数据表示。

C/C++ 调试器数据视图设置

在这里,您可以控制标准库类型的渲染、模块名称、函数参数类型和函数模板参数等选项。 或者,使用 调试工具窗口 中的上下文菜单,在帧视图和变量视图中操作:

帧视图上下文选项
变量视图上下文选项

STL 容器渲染

当您选中 启用 GNU 库渲染器 复选框时,这会影响使用 gcc 编译器时 GDB 渲染 STL 容器的方式。 如果使用 clang 与 GDB 配合使用,此选项仅适用于 libstdc++ (有关更多信息,请参阅 下一章)。

当前此选项不适用于 LLDB。 检查 LLDB(从版本 9.0 开始)如何在下面的 LLDB STL 格式化器 中处理 libc++libstdcxx

LLDB STL 格式化器

以下列出的内容适用于 LLDB 版本 9.0。

Type

libcxx

libstdc++

字符串

check_retina.png

check_retina.png

数组

check_retina.png

check_retina.png

向量

check_retina.png

minus_retina.png

双端队列

check_retina.png

minus_retina.png

list

check_retina.png

minus_retina.png

前向列表

check_retina.png

minus_retina.png

set

check_retina.png

minus_retina.png

map

check_retina.png

minus_retina.png

多重集合

check_retina.png

minus_retina.png

多重映射

check_retina.png

minus_retina.png

无序集合

check_retina.png

minus_retina.png

无序映射

check_retina.png

minus_retina.png

无序多重集合

check_retina.png

minus_retina.png

无序多重映射

check_retina.png

minus_retina.png

check_retina.png

minus_retina.png

队列

check_retina.png

minus_retina.png

优先队列

check_retina.png

minus_retina.png

Type

libcxx

libstdc++

字符串

check_retina.png 如果使用 -fstandalone-debug 编译

check_retina.png

数组

check_retina.png

check_retina.png

向量

check_retina.png

check_retina.png

双端队列

check_retina.png

check_retina.png

list

check_retina.png

check_retina.png

前向列表

check_retina.png

minus_retina.png

set

check_retina.png

check_retina.png

map

check_retina.png

check_retina.png

多重集合

check_retina.png

check_retina.png

多重映射

check_retina.png

check_retina.png

无序集合

check_retina.png

minus_retina.png

无序映射

check_retina.png

minus_retina.png

无序多重集合

check_retina.png

minus_retina.png

无序多重映射

check_retina.png

minus_retina.png

check_retina.png

check_retina.png

队列

check_retina.png

check_retina.png

优先队列

check_retina.png

check_retina.png

用于 macOS 的 GDB 的 STL 渲染器

GDB 用作调试后端并结合 ClangCMake 默认编译器)在 macOS 上查看 STL 容器内容时存在限制。 作为解决方法,请尝试以下说明。

  1. 使用 libstdc++ 库代替 libc++。 要在项目中包含 libstdc++ ,请在 CMakeLists.txt 中添加以下命令:

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdc++")

    或者,转到 设置 | 构建、执行、部署 | CMake ,并在 CMake 选项 字段中指定库:

    -DCMAKE_CXX_FLAGS="-stdlib=libstdc++"
  2. 我们还建议您使用 dwarf3 调试信息格式。 为此,请将以下命令添加到您的 CMakeLists.txt

    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -gdwarf-3") set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -gdwarf-3")

自定义 .gdbinit/.lldbinit 文件

如果您的项目需要更多的调试配置选项,您可以创建一个自定义初始化文件, .gdbinit 用于 GDB 或 .lldbinit 用于 LLDB,并将其放置在项目根目录下。 此文件可以通过 VCS 与其他项目文件一起共享。

通常,GDB/LLDB 在启动时会按一定顺序加载多个初始化文件。 首先,调试器会在用户的主目录中查找初始化文件,然后在当前工作目录(您的项目根目录)中查找文件。

默认情况下,出于安全原因,不会执行项目特定初始化文件中的命令。 要允许执行,请按照以下描述修改主目录中的初始化文件。

启用读取项目特定的 .gdbinit/.lldbinit

~/.gdbinit 文件中设置权限。

对于 GDB 11.1 及更新版本,您可以改用 $HOME/.config/gdb/gdbinit $HOME/Library/Preferences/gdb/gdbinit

在使用 WSL 时,编辑位于 WSL 主目录中的 .gdbinit 文件, /home/[user]/.gdbinit

  • 适用于所有项目

    set auto-load local-gdbinit on add-auto-load-safe-path /
  • 适用于特定项目

    set auto-load local-gdbinit on add-auto-load-safe-path [full path to the project root]/.gdbinit

在主目录的 ~/.lldbinit 文件中设置权限:

settings set target.load-cwd-lldbinit true

    调整 GDB 超时值

    您可以通过在 CLion 注册表中设置相应的属性来控制 GDB 超时值。

    1. 请按 Ctrl+Shift+A 或从主菜单中选择 帮助 | 查找操作。 在打开的弹出窗口中,开始输入 Registry ,选择相应的项目并按 Enter

      在“查找操作”中搜索注册表
    2. 在打开的对话框中,开始输入 cidr.debugger.timeout。 点击高亮字符串的 Value 字段,并以毫秒为单位输入超时值。

      GDB 超时的注册表键

    在 Windows 上配置外部 GDB 控制台

    在 Windows 上,使用 GDB 8.0 之前的版本时,会为应用程序输入/输出使用单独的控制台。 对于较新的 GDB 版本,输出默认重定向到 CLion 控制台。 但是,您可以切换回打开外部输出窗口。

    1. 请按 Ctrl+Shift+A 或从主菜单中选择 帮助 | 查找操作。 在打开的弹出窗口中,开始输入 Registry ,选择相应的项目并按 Enter

      在“查找操作”中搜索注册表
    2. 在打开的对话框中,开始输入 cidr.debugger.gdb.workaround.windows.forceExternalConsole。 点击高亮字符串的 Value 字段,并以毫秒为单位输入超时值。

      启用 Windows 上外部 GDB 控制台的注册表键
    最后修改日期: 2025年 9月 26日