答案:基于putus答案的,我计算出了下面的配置,只需单击一下就可以构建和调试
首先,您需要添加一个任务来构建带有相应标记的二进制文件。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "0.1.0",
"command": "bash",
"isShellCommand": true,
"args": [""],
"showOutput": "always",
"tasks": [
{
"taskName": "buildBinWithTag",
"command": "go",
"args": ["build", "-o", "BinaryName", "-tags", "THISISATAG"],
"isShellCommand": true
}
]
}此任务应在调试器启动之前执行。
{
"version": "0.2.0",
"configurations": [
{
"name": "DebugBinWithTag", //added config
"type": "go",
"request": "launch",
"mode": "exec",
"remotePath": "",
"port": 2345,
"host": "127.0.0.1",
"program": "${workspaceRoot}/BinaryName",
"env": {},
"args": [],
"showLog": true,
"preLaunchTask": "buildBinWithTag"
}
]
} 原始问题:我使用构建标记编译不同版本的Go程序,并使用"go build -tags THISISAFLAG“编译它
//+build THISISAFLAG
package main这工作得很好。但是有没有办法告诉调试器使用这些标志。我尝试过使用像下面这样的启动配置,但是它没有工作。
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"remotePath": "",
"port": 2345,
"host": "127.0.0.1",
"program": "${fileDirname}",
"env": {},
"args": ["-flags THISISAFLAG"],
"showLog": true
}
]
}发布于 2017-04-25 00:11:49
可以将预先构建的二进制文件附加到调试器上。
go build -o myapp.exe -tags THISISAFLAGLaunch Exe添加到launch.json
{“版本”:"0.2.0",“配置”:[{“名称”:“启动调试”,//现有配置“类型”:"go",“请求”:“启动”,“模式”:“调试”,"remotePath":“,端口”:2345,“主机”:"127.0.0.1",“程序”:"${fileDirname }“、"env":{}、"args":[]、"showLog":true }、{ "name":”启动EXE“、//添加配置"type":"go”、"request":“added”、"remotePath":““端口”:2345,“主机”:"127.0.0.1",“程序”:"${workspaceRoot}/myapp.exe","env":{},"args":[],"showLog":true }注:
由于编译器优化和本期,某些变量在调试会话期间可能不会以不同的名称显示或显示(见下文)。将来,您可以在构建应用程序以禁用编译器优化时添加-gcflags='-N -l'。

发布于 2018-08-30 18:59:03
代码Go插件现在支持一个名为buildFlags的launch.json键,它允许您指定相应值为"-tags Tag"的构建标记。(似乎有不允许多个标签的错误。)
如果您的构建需要构建标记(例如,go build -tags whatever_tag),那么使用内容"-tags whatever_tag“添加参数buildFlags。
如果您有不同的构建配置,每个配置都需要自己的构建标记,则可以为每个构建创建单独的启动配置。
发布于 2021-07-27 17:06:46
下面是我的测试配置:
{
"name": "Delve: Test",
"type": "go",
"request": "launch",
"mode": "test",
"buildFlags": "-tags 'unit_tests integration_tests all_tests'",
"program": "${file}",
"showLog": true
}"${file}"更改为"${fileDirname}",这取决于您的usecase,如果您使用的是后者,至少其中一个文件应该具有上述标记。https://stackoverflow.com/questions/43582024
复制相似问题