如何通过launch.json向Go的Delve调试器传递dlvFlags参数?
解决VSCode远程Go Delve调试中
--buildFlags -mod=mod的传递问题 问题核心
Delve在DAP调试模式下不支持通过dlvFlags传递构建参数,而是要求通过DAP协议launch请求的arguments字段接收,这也是你看到警告Warning: build flags ignored with dap; specify via launch/attach request instead的原因。VSCode的Go插件针对DAP模式提供了专门的配置字段,无需直接操作DAP的arguments。
正确配置方式
在launch.json中直接使用buildFlags字段替代dlvFlags,插件会自动将该字段的值映射到DAPlaunch请求的对应参数中。
示例配置
{ "version": "0.2.0", "configurations": [ { "name": "Remote Go Debug", "type": "go", "request": "launch", "mode": "remote", "program": "${workspaceFolder}", "env": {}, "args": [], "buildFlags": "-mod=mod", "remotePath": "${workspaceFolder}", "port": 2345, "host": "remote-host-ip" } ] }
关键说明
dlvFlags是为Delve的非DAP模式(比如直接命令行启动)设计的,DAP模式下Delve会忽略该参数,所以不要在DAP调试配置中混用。- 如果你需要传递多个构建参数,直接在
buildFlags中用空格分隔即可,比如"-mod=mod -race"。
内容的提问来源于stack exchange,提问作者user18911088
相关产品推荐
相关产品推荐

