前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Visual Studio Code和delve进行golang远程调试

使用Visual Studio Code和delve进行golang远程调试

作者头像
运维开发王义杰
发布2023-08-15 15:01:55
1.2K0
发布2023-08-15 15:01:55
举报

远程调试对于开发分布式应用或在不同环境中测试代码是非常有用的。本文将介绍如何使用Visual Studio Code和Delve进行Golang远程调试。

1. 安装Delve

首先,我们需要在本地和远程服务器上安装Delve。在终端中运行以下命令:

代码语言:javascript
复制
go install github.com/go-delve/delve/cmd/dlv@latest

2. 准备示例代码

在本地和远程服务器上,创建一个简单的Go程序作为我们的示例代码。文件名为main.go,定义一个变量i和doSomething方法的参数n足够我们观察变量:

代码语言:javascript
复制
package main

import (
  "fmt"
  "time"
)

func main() {
  var i int
  fmt.Println("Start...")
  for i = 0; i < 5; i++ {
    doSomething(i)
    time.Sleep(time.Second)
  }
  fmt.Println("End...")
}

func doSomething(n int) {
  fmt.Println("Doing something with", n)
}


3. 在服务器上启动Delve

在远程服务器的示例代码目录中,运行以下命令启动Delve:

代码语言:javascript
复制
dlv debug --headless --listen=:2345 --api-version=2

4. 配置Visual Studio Code

在本地开发机器上,我们需要在Visual Studio Code中配置远程调试。首先打开launch.json文件,然后添加以下配置:

代码语言:javascript
复制

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch file",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${file}"
        },
        {
        "name": "Connect to server",
        "type": "go",
        "request": "attach",
        "mode": "remote",
        "remotePath": "/root/src/delve_test",
        "port": 2345,
        "host": "119.45.241.70",
        "apiVersion": 2
    }  
    ]
}

请确保替换/root/src/delve_test服务器地址为远程服务器的实际路径和地址。

5. 开始远程调试

在Visual Studio Code中,打开刚才编辑的launch.json文件,选择“Connect to server”,然后按下F5开始调试。

我们可以在本地的Visual Studio Code中设置断点、查看变量、单步执行等,就像在本地调试一样,但实际的代码执行是在远程服务器上。

6. 结束调试

当我们完成调试后,可以在Visual Studio Code中按下Shift+F5来停止调试。

7. 调试编译后二进制程序

调试二进制程序需要需要注释掉调试代码的remotePath配置属性,否则匹配不上断点,launch.json文件内容如下:

代码语言:javascript
复制
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch file",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${file}"
        },
        {
        "name": "Connect to server",
        "type": "go",
        "request": "attach",
        "mode": "remote",
        // "remotePath": "/root/src/delve_test",
        "port": 2345,
        "host": "119.45.241.70",
        "apiVersion": 2
    }  
    ]
}

我们需要在远程服务器上使用Delve启动二进制文件。在服务器编译程序或在windows编译linuxP平台的二进制程序参考下面的命令:

代码语言:javascript
复制
$env:GOOS = "linux"; $env:GOARCH = "amd64"; go build -o uml

通过以下命令在服务启动程序:

代码语言:javascript
复制
dlv --listen=:2345 --headless=true --api-version=2 exec ./uml

这将启动我们的程序并使其准备接受远程调试连接。2345是Delve监听的端口号,可以根据需要更改。

变量n

变量i

服务器命令和显示内容

总结

使用Visual Studio Code和Delve进行Golang的远程调试非常方便快捷。无论是分布式开发,还是在特定环境下测试代码,都可以借助远程调试来实现。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发王义杰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 远程调试对于开发分布式应用或在不同环境中测试代码是非常有用的。本文将介绍如何使用Visual Studio Code和Delve进行Golang远程调试。
    • 1. 安装Delve
      • 2. 准备示例代码
        • 3. 在服务器上启动Delve
          • 4. 配置Visual Studio Code
            • 5. 开始远程调试
              • 6. 结束调试
                • 总结
                相关产品与服务
                远程调试
                远程调试(Remote Debugging,RD)在云端为用户提供上千台真实手机/定制机/模拟器设备,快速实现随时随地测试。运用云测技术对测试方式、操作体验进行了优化,具备多样性的测试能力,包括随时截图和记录调试日志,稳定的支持自动化测试, 设备灵活调度,用例高效执行, 快速定位产品功能和兼容性问题。云手机帮助应用、移动游戏快速发现和解决问题,节省百万硬件费用,加速敏捷研发流程。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档