VSCode使用dlv-dap调试Go Gin项目设置断点需手动恢复是否为预期行为?
问题复现环境
- vscode@1.60.0
- vscode-go@v0.27.2
- go:1.16.3 darwin/amd64
结论
这个行为属于dlv-dap开发优化阶段的临时实现,并非最终的预期设计。
原因说明
vscode-go v0.27.0版本首次将dlv-dap设为默认调试适配器时,为了避免运行态下设置断点出现偏移、失效的问题,采用了先暂停程序执行、完成断点写入校验后等待用户手动恢复的逻辑,这是早期迭代过程中的临时处理方案,不是长期的设计目标。
解决方案
- 升级组件版本:该问题已经在vscode-go v0.29.0及后续正式版本中修复,升级vscode-go插件到对应版本,同时更新dlv工具到最新版,即可在保留
dlv-dap全部新特性的前提下,支持运行态下热修改断点,不会再触发Execution halted to set breakpoints - please resume execution manually的提示,无需每次修改断点后手动恢复执行。 - 临时过渡方案:如果暂时无法升级插件版本,可以继续使用
legacy debug adapter作为替代,该模式下不会出现断点修改后需要手动恢复的问题。
内容的提问来源于stack exchange,提问作者Kyungeun Park
相关产品推荐
相关产品推荐

