如何使用VS Code调试Go vendor目录下的依赖模块?
VS Code vendor目录依赖调试断点失效解决方案
完全可以正常调试vendor目录内的代码,断点无法设置、无法命中本质是VS Code及对应语言调试插件的默认规则拦截了vendor路径的调试加载,按以下步骤调整即可:
- 修改调试配置的跳过规则
绝大多数场景下问题出在.vscode/launch.json的默认配置:各语言的调试插件默认会把vendor/**路径加入skipFiles列表,调试时直接跳过该路径下的所有文件,不加载断点信息。打开launch.json找到你正在使用的调试配置项,删除所有匹配vendor路径的跳过规则即可,以Go项目的delve调试配置为例:
PHP、Node.js等其他用vendor管理依赖的项目逻辑完全一致,只要清掉配置里所有vendor相关的skip规则就行。{ "version": "0.2.0", "configurations": [ { "name": "Launch Package", "type": "go", "request": "launch", "program": "${workspaceFolder}/main.go", // 移除默认生成的vendor跳过规则 // "skipFiles": ["${workspaceFolder}/vendor/**"] } ] } - 检查编辑器文件排除配置
打开VS Code设置面板,搜索files.exclude和search.exclude两个配置项,查看工作区设置里是否把vendor/目录加入了排除列表,如果有就取消对应勾选,保证VS Code能正常索引vendor下的文件。 - 校验依赖一致性后重启调试
如果是Go项目,先在终端执行go mod vendor确保本地vendor目录下的依赖版本和构建二进制时使用的依赖版本完全一致,避免版本错位导致断点位置不匹配。改完所有配置后完全终止现有调试进程,重新启动调试会话,此时打开vendor下的对应文件点击行号即可正常设置断点,程序运行到对应逻辑时会正常命中。
我自己日常开发调试Go、PHP项目的vendor内依赖逻辑,按上面的配置调整后从来没遇到过断点无法使用的问题,不需要额外装第三方插件。
内容的提问来源于stack exchange,提问作者Pieter P
相关产品推荐
相关产品推荐

