You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CLion调试shared_ptr及容器时显示异常,如何解决?

解决Linux下CLion调试std::shared_ptr/std::unordered_map显示异常的方案

1. 匹配GDB与libstdc++调试信息

你的GDB来自devtoolset-11,需确保对应版本的libstdc++调试包安装完整,执行以下命令:
sudo yum install devtoolset-11-libstdc++-devel(适用于RHEL/CentOS系)

2. 配置CLion的GDB参数

打开CLion的File -> Settings,进入Build, Execution, Deployment -> Debugger -> GDB:

  • 勾选Use target remote protocol
  • 在Startup commands中添加以下GDB命令,强制加载STL调试美化器:
    set print pretty on
    set print object on
    set print static-members on
    set print vtbl on
    source /opt/rh/devtoolset-11/root/usr/share/gdb/python/libstdcxx/v6/printers.py
    
    注意确认printers.py的路径与你的devtoolset-11安装路径一致。

3. 调整CMake编译选项

在项目的CMakeLists.txt中添加明确的调试编译参数,确保clang++生成完整调试信息:

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g3 -ggdb3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") # 根据项目实际C++版本调整

同时避免启用-fomit-frame-pointer这类干扰调试的编译选项。

4. 手动加载调试美化器(临时修复)

若上述配置未生效,可在调试会话启动后,在CLion的GDB控制台手动执行:
source /opt/rh/devtoolset-11/root/usr/share/gdb/python/libstdcxx/v6/printers.py
执行后刷新调试变量视图即可。

5. 启用CLion内置STL渲染

进入Settings -> Build, Execution, Deployment -> Debugger -> Data Views -> C/C++,确保Enable rendering for standard containers选项处于勾选状态。


内容的提问来源于stack exchange,提问作者Roman Goyenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 02:15:03