首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Visual代码和Delve调试器中使用标记进行调试

在Visual代码和Delve调试器中使用标记进行调试
EN

Stack Overflow用户
提问于 2017-04-24 07:20:32
回答 3查看 3.7K关注 0票数 4

答案:基于putus答案的,我计算出了下面的配置,只需单击一下就可以构建和调试

首先,您需要添加一个任务来构建带有相应标记的二进制文件。

代码语言:javascript
复制
{
  // 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            
        }       
    ]
}

此任务应在调试器启动之前执行。

代码语言:javascript
复制
{
  "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“编译它

代码语言:javascript
复制
//+build THISISAFLAG

package main

这工作得很好。但是有没有办法告诉调试器使用这些标志。我尝试过使用像下面这样的启动配置,但是它没有工作。

代码语言:javascript
复制
{
  "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
    }
  ]
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-25 00:11:49

可以将预先构建的二进制文件附加到调试器上。

  1. 从命令行构建应用程序,例如go build -o myapp.exe -tags THISISAFLAG
  2. 将配置Launch 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'

票数 1
EN

Stack Overflow用户

发布于 2018-08-30 18:59:03

代码Go插件现在支持一个名为buildFlagslaunch.json键,它允许您指定相应值为"-tags Tag"的构建标记。(似乎有不允许多个标签的错误。)

相关摘录自插件Wiki

如果您的构建需要构建标记(例如,go build -tags whatever_tag),那么使用内容"-tags whatever_tag“添加参数buildFlags。

如果您有不同的构建配置,每个配置都需要自己的构建标记,则可以为每个构建创建单独的启动配置。

票数 6
EN

Stack Overflow用户

发布于 2021-07-27 17:06:46

下面是我的测试配置:

代码语言:javascript
复制
{
  "name": "Delve: Test",
  "type": "go",
  "request": "launch",
  "mode": "test",
  "buildFlags": "-tags 'unit_tests integration_tests all_tests'",
  "program": "${file}",
  "showLog": true
}
  1. 除非所选文件中不存在标记,否则它将继续出错。
  2. 您可能希望将"${file}"更改为"${fileDirname}",这取决于您的usecase,如果您使用的是后者,至少其中一个文件应该具有上述标记。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43582024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档