如何在VS Code C++调试器中启用justMyCode仅调试自有代码功能?
VS Code C++调试实现仅调试自有代码配置方法
VS Code C/C++扩展没有提供和Visual Studio一致的可视化JustMyCode开关,你使用gdb作为调试后端时,直接配置gdb的跳过规则即可实现单步不进入依赖库、标准库构造函数的效果,修改现有launch.json即可完成配置。
配置修改
直接在现有配置的setupCommands数组中追加gdb跳过规则,修改后的完整配置如下:
{ "version": "0.2.0", "configurations": [ { "name": "C/C++: g++.exe build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }, // 以下为新增的JustMyCode规则 { "description": "跳过所有std命名空间下的函数", "text": "-interpreter-exec console \"skip -rfu ^std::.*\"", "ignoreFailures": true }, { "description": "跳过MinGW标准库源码", "text": "-interpreter-exec console \"skip -gfi C:/msys64/mingw64/**/*\"", "ignoreFailures": true }, // 如有第三方库,仿照下面格式追加即可,替换为实际第三方库路径 // { // "description": "跳过第三方依赖库", // "text": "-interpreter-exec console \"skip -gfi D:/your_lib_path/**/*\"", // "ignoreFailures": true // } ], "preLaunchTask": "C/C++: g++.exe build active file" } ] }
配置说明
-interpreter-exec console是让gdb执行控制台命令的固定前缀skip -rfu ^std::.*通过正则匹配所有std命名空间下的函数,STL容器、字符串的构造、成员函数都会被自动跳过,不需要额外配置路径skip -gfi C:/msys64/mingw64/**/*跳过当前使用的msys2 MinGW目录下的所有源码文件,避免进入系统库内部- 自行引入的第三方库可以仿照注释中的格式追加对应规则,
**/*是通配符,匹配目录下所有层级的文件
调试临时操作
配置生效后如果遇到特殊情况需要进入库代码调试,不需要修改配置,直接在VS Code调试控制台输入对应gdb命令即可:
info skip:查看当前所有生效的跳过规则及对应编号skip disable [规则编号]:临时关闭指定规则,不填编号则关闭所有规则skip enable [规则编号]:重新启用指定规则,不填编号则启用所有规则skip delete [规则编号]:删除指定规则
注意事项
- 配置中的所有文件路径必须使用正斜杠
/,Windows默认的反斜杠\是转义字符,会导致gdb路径匹配失效 - 不要将自有项目的代码路径加入跳过规则,否则会导致自有代码无法命中断点、单步不进入
- 如果更换了MinGW安装位置,将配置中对应的
C:/msys64/mingw64/替换为新的安装路径即可
内容的提问来源于stack exchange,提问作者Purushottam Nawale
相关产品推荐
相关产品推荐

