clion中step over(f8)进入basic_string.h,是因为默认未启用“skip all system headers when stepping”选项;需在settings→debugger→data views中勾选该选项,或对自定义stl路径手动添加到do not step into scripts列表。

CLion 里“跳过”调试,本质是避免进入不关心的代码(比如标准库、第三方模块),只在你自己的逻辑里单步。关键不是“跳过所有”,而是“精准控制跳过哪些”。
Step Over(F8) 还是进了 basic_string.h?
这是最典型的误判:你以为按了 F8(Step Over)就该跳过函数调用,结果却掉进 basic_string.h 或 vector.tcc。根本原因不是操作错了,而是 CLion 默认没把标准库头文件列入跳过列表。
- 检查设置:
Ctrl+Alt+S→Build, Execution, Deployment→Debugger→Data Views→ 勾选Skip all system headers when stepping - 这个选项对 GDB/LLDB 都生效,但仅作用于系统头文件(
/usr/include、libstdc++等路径下的),自己写的头文件不会被误伤 - 如果用了自定义 STL 路径(比如 Conan 安装的 libc++),需手动添加到
Debugger | Stepping的Do not step into scripts列表中
JavaScript/TypeScript 调试时总跳进 node_modules
和 C++ 类似,但机制不同:JS 调试器默认不黑盒第三方代码,且 Source Map 会让打包后的代码映射回原始 node_modules 源码。
- 打开
Settings→Build, Execution, Deployment→Debugger→Stepping - 在
JavaScript区域勾选Do not step into scripts,然后点+添加规则:node_modules/*、next/dist/*、react-dom/* - 注意:路径通配符只支持
*和**,不支持正则;若用 Yarn PnP,路径可能为.yarn/cache/**
想临时绕过某次调用,又不想改全局设置
适合快速验证逻辑,或调试中途发现某个函数肯定没问题,想直接跳过去。
- 光标停在含函数调用的行,按
Alt+Shift+F8(Force Step Over)——它会忽略该行所有断点,并彻底跳过所有被调函数,哪怕里面设置了断点也不会停 - 对比:
F8是“正常跳过”,但若被调函数内有断点仍会停;Alt+Shift+F8是“强制跳过”,断点全失效 - 慎用:如果被跳过的函数抛异常,你将错过第一现场;仅用于确认无副作用的纯计算函数
真正容易被忽略的是:Skip all system headers 只对 C/C++ 生效,而 JS/Python 的“跳过”必须单独配置路径规则;另外,Force 系列快捷键(Alt+Shift+F7/F8)不是备用方案,而是应对突发路径污染的必要兜底手段。











