CLion调试shared_ptr及容器时显示异常,如何解决?
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.pyprinters.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
相关产品推荐
相关产品推荐

