讲师中心 微信公众号
AI工具推荐 视频效率加速

CLion怎么调试运行异常代码

胖宇小哥_5120

胖宇小哥_5120

发布时间:2026-09-12 13:05:25

|

216人浏览过

|

来源于php中文网

原创

必须使用 Debug 构建类型并启用信号捕获,否则断点不触发、崩溃无调用栈;需检查构建配置、CMake 设置、调试器信号设置及 ASan 配置以解决优化干扰与符号缺失问题。

clion怎么调试运行异常代码

CLion 调试时程序直接崩溃,断点不触发怎么办

不是断点没打对,而是 CLion 默认在 ReleaseRelWithDebInfo 配置下构建,调试信息被优化掉或缺失。必须确保使用 Debug 构建类型,否则 gdb/lldb 无法映射源码行号,断点会显示为“unresolved”,运行即闪退。

  • 检查右下角构建配置:点击状态栏的 Build Type,选 Debug(不是灰色不可点状态)
  • 若 CMakeLists.txt 中手动设置了 CMAKE_BUILD_TYPE,确认其值为 Debug,而非硬编码成 Release
  • 改完后务必点击 Reload CMake project(齿轮图标旁的小刷新箭头),否则变更不生效
  • Windows 上若用 MinGW,确保安装的是带调试支持的版本(如 mingw64 而非 ucrt64,后者默认无完整调试符号)

捕获段错误(SIGSEGV)或 abort() 崩溃的实时调用栈

CLion 的默认调试器不会自动中断在 abort()segfaultstd::terminate 发生瞬间,需要手动启用信号捕获。否则你只看到进程退出码 134/139,毫无上下文。

C++
C++

"空空如也"

下载
  • 打开 Run → Edit Configurations…,选中当前运行配置
  • 展开 Debugger → Shared Libraries,勾选 Load debug symbols automatically
  • 关键一步:点击 Debugger → Additional Debugger Settings → Enable signal handlers,然后添加信号:SIGSEGVSIGABRTSIGILL,行为设为 Break
  • Linux/macOS 下若用 lldb,还需在 Settings → Build, Execution, Deployment → Console → Terminal 中关闭 Use external console,否则信号可能被终端吞掉

调试 Release 模式下复现的异常(比如优化引发的未定义行为)

有些 bug 只在 Release 下出现,但又不能关优化——这时不能靠常规断点,得结合地址消毒器(ASan)和运行时堆栈追踪。

  • 在 CMakeLists.txt 中为 Release 添加编译选项:set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fsanitize=address -fno-omit-frame-pointer")
  • 确保链接器也支持 ASan:set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -fsanitize=address")
  • CLion 中新建一个 Run Configuration,Build type 设为 Release,并在 Environment variables 加上 ASAN_OPTIONS=detect_stack_use_after_return=true
  • 注意:ASan 会显著拖慢运行速度,且不兼容 Valgrind;Windows 上需用 MSVC + /fsanitize=address(仅 VS2019+ 和 clang-cl 支持)

变量值显示为 <optimized out> 或完全空白

这是最典型的优化干扰。哪怕你用的是 Debug 构建,如果某段代码被内联、循环被展开,或者编译器判定变量生命周期结束,CLion 就读不到它的值。

  • 临时禁用局部优化:在出问题的函数前加 __attribute__((optimize("O0")))(GCC/Clang),或 [[msvc::no_optimize]](MSVC)
  • 检查是否启用了 -flto(LTO):CMake 中删掉 set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON),LTO 会让调试信息严重失真
  • Settings → Build, Execution, Deployment → Compiler → C/C++ Compiler 中,确认 Debug information levelFull debug info (-g3),不是 Line number tables only
  • 若变量是结构体成员且值为空,尝试在 Watches 窗口里输入 *thisreinterpret_cast<char*>(ptr) 绕过优化器的“不可见”判断
调试 C++ 异常真正的难点不在设置,而在于区分:是编译期可查的未定义行为(UB)、链接期符号冲突、运行时内存破坏,还是调试器本身没加载对的符号表。每次崩溃前先看控制台输出的原始信号和寄存器 dump,比盲目加断点更有效。

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

20

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

0

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

20

2026.09.23

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

0

2026.09.22

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

20

2026.09.22

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

20

2026.09.22

loomy官网入口地址合集
loomy官网入口地址合集

本专题汇总了 Loomy 桌面 AI 助理的官方入口地址合集及使用指南。提供 macOS 与 Windows 客户端下载 。Loomy 是讯飞推出的桌面级 AI 工作搭子,支持文件整理、数据分析、网页操作及通过飞书/钉钉远程操控电脑,助你高效完成本地办公任务 。

20

2026.09.22

NumPy常见函数使用方法
NumPy常见函数使用方法

本专题整理 NumPy 常见函数使用方法相关教程,覆盖函数大全、参数用法、数组运算、统计聚合、排序处理、where 条件筛选、linspace 创建数列等常用场景,帮助读者快速掌握 NumPy 函数调用思路和实际数据处理技巧。

0

2026.09.22

NumPy性能优化版本更新与常见报错排查
NumPy性能优化版本更新与常见报错排查

本专题整理 NumPy 性能优化、版本更新与常见报错排查相关教程,覆盖向量化计算、广播性能、内存布局、NumPy 2.0 升级、版本兼容冲突、安装导入报错、dtype 溢出、矩阵运算异常和 broadcasting 报错修复,帮助读者系统掌握 NumPy 性能调优与问题定位方法。

20

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CLion 快速入门指南
CLion 快速入门指南

共0课时 | 0人学习

CLion 调试基础入门
CLion 调试基础入门

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn