VS Code中C++的Just My Code失效,能否用.natstepfilter实现指定函数跳过调试?
VS Code中C++调试用.natstepfilter实现自定义跳过的可行方案
可以用.natstepfilter文件实现自定义调试跳过行为,但不建议修改全局或扩展自带的默认文件,正确做法是创建自定义文件并通过配置指定,具体步骤如下:
1. 创建自定义.natstepfilter文件
在项目根目录新建my_stepfilter.natstepfilter,按XML格式编写跳过规则,示例如下:
<?xml version="1.0" encoding="utf-8"?> <StepFilter xmlns="http://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010"> <!-- 跳过std命名空间下所有函数 --> <Function> <Name>std::.*</Name> <Action>NoStepInto</Action> </Function> <!-- 跳过boost库函数 --> <Function> <Name>boost::.*</Name> <Action>NoStepInto</Action> </Function> <!-- 可添加项目内需要跳过的工具类/函数 --> <Function> <Name>utils::.*</Name> <Action>NoStepInto</Action> </Function> </StepFilter>
规则里的Name字段支持正则表达式,Action可选NoStepInto(跳过进入)或StepInto(强制进入)。
2. 在launch.json中指定该文件
打开.vscode/launch.json,在对应的MSVC调试配置(type为cppvsdbg)中添加natStepFilterFile字段,关联你创建的自定义文件:
{ "version": "0.2.0", "configurations": [ { "name": "MSVC Debug", "type": "cppvsdbg", "request": "launch", "program": "${workspaceFolder}/build/your_program.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "externalConsole": false, "visualizerFile": "${workspaceFolder}/my_visualizer.natvis", // 指定自定义跳过规则文件 "natStepFilterFile": "${workspaceFolder}/my_stepfilter.natstepfilter" } ] }
3. 验证配置
重启VS Code的调试会话,单步调试时会自动跳过你在规则中指定的函数。
之前修改默认文件无效的原因
- 修改全局
default.natstepfilter需要管理员权限,若未以管理员身份编辑,修改可能未保存成功; - 扩展目录下的
default.natstepfilter会在cpptools扩展更新时被覆盖,且调试器优先读取项目级或launch.json指定的配置; - 需确保调试器类型为
cppvsdbg,gdb/lldb不支持.natstepfilter格式的规则。
内容的提问来源于stack exchange,提问作者TooTone
相关产品推荐
相关产品推荐

