Golang 远程调试工具——详细步骤

本文介绍了如何在Golang中进行远程调试,特别是在本地无法访问特定服务器地址时。详细阐述了从编译可执行文件、配置服务器环境到设置本地调试环境的步骤。包括在服务器上安装Go环境和Delve调试工具,以及在Goland中配置远程调试的详细过程。通过这样的调试方式,可以在本地有效地调试运行在服务器上的Go应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Golang 远程调试工具

一、背景

当我们需要在本地电脑调试服务器上的Go应用程序的时候,就需要使用远程调试工具了。

比如,本地无法访问某些地址,只有服务器上的某台机器才可以访问。同时我们又想进行调试,查看代码执行过程。在本地,我们开启调试时,无法访问某些地址,导致无法正常调试。所以我们使用远程调试工具,将可执行文件放在服务器上。使用调试工具运行可执行文件,并开启调试端口。本地就可以访问端口,进行调试远程的代码了。

二、环境与步骤

1、可执行文件

可执行文件需要被编译成服务器可执行的二进制文件。比如Windows和Linux分别使用不同的命令进行交叉编译:

# 编译成 linux 的二进制文件
CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -o /path/app

# 编译成 windows 的二进制文件
CGO_ENABLED=0 GOARCH=amd64 GOOS=windows go build -o /path/app.exe

但,如果需要被远程调试,则需要加上这些参数:

# 编译成 windows 的二进制文件,并且禁用优化,禁用内联,以方便调试。
CGO_ENABLED=0 GOARCH=amd64 GOOS=windows go build -gcflags "all=-N -l" -o /path/app.exe

2、服务器环境

虽然放在服务器上的是可执行的二进制文件,但因为要调试,所以也需要go语言的解释器。所以服务器上需要配置:go语言环境、安装delve调试工具。(注:需要将这两个工具配置进环境变量里)

步骤:

1、下载 go 安装包,安装即可。linux可直接使用依赖库下载安装。
2、安装delve调试工具:https://github.com/go-delve/delve

# 在 go 1.16 及以上版本可直接执行下面命令即可
go install github.com/go-delve/delve/cmd/dlv@latest

3、本地环境

本地直接使用Goland即可。

步骤:

1> 打开goland,载入代码(代码要和服务器上的可执行文件对应),点击顶部菜单的“运行”,点击调试:
在这里插入图片描述
2> 点击编辑配置:

在这里插入图片描述
3> 点击左上角的 +
在这里插入图片描述
4> 选择 远程配置:Go Remote
在这里插入图片描述
5> 填入相关配置:

名称:自定义名称,用以区分不同的调试配置
主机:部署可执行文件的服务器IP
端口:保持不变,如果变动的话,后续再服务器上启动时开启的端口也要保持一致。

后续服务器上的启动命令,如下图:

# 服务器启动命令
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./demo
# 如果可执行文件需要传入启动参数则使用 --
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./demo -- -c ./config.toml

在这里插入图片描述

6> 点击应用,点击调试,这时候会出现,正在连接,服务器Ip:端口
在这里插入图片描述
7> 在服务器启动调试工具:
在这里插入图片描述
8> 本地环境显示开始调试:
在这里插入图片描述
Over


推荐两本书《大话数据结构》和《GO语言程序设计》
《大话数据结构》:此书适合自学的程序员,它用一个故事、趣味的题目、一部电影的介绍等形式来作为每一个知识点的形象类比,通俗易懂。
电子版领取:
扫码关注公众号:通向财富自由之路,回复“大话数据结构”即可领取电子版。
扫码关注公众号:通向财富自由之路,回复“大话数据结构”即可领取电子版

回复 ”GO语言程序设计“ 也可获得 《GO语言程序设计》电子版。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值