内网环境安装dlv,本地远程调试go
背景:内网环境(服务器)下安装dlv,本地通过dlv调试编译后的go代码。
可以配合观看: 【dlv远程调试-哔哩哔哩】 https://b23.tv/NqPZ5q9
内网安装dlv步骤
1、dlv安装: (我额服务器和内网的go都是1.21以上)
# 先在有网络的环境下(去linux机器)
git clone https://github.com/derekparker/delve.git
cd delve/cmd/dlv/
go build
# 编译好了有一个二进制
# 然后打包整个delve为压缩包
tar -czvf delve.tar.gz delve
将压缩包上传至服务器
tar -xzvf delve.tar.gz
cd delve
go install -v ./cmd/dlv
# 安装好了查看版本; dlv 会在/root/go/bin/dlv
/root/go/bin/dlv version
ln -s /root/go/bin/dlv /bin/dlv
2、调试
编译的时候指定一些参数
go build -gcflags "all=-N -l" -o myapp
-N:禁用优化(即关闭优化器)。-l:禁用内联优化(即关闭内联函数优化)。使用
go build -gcflags "all=-N -l"编译 Go 程序时,默认情况下,Go 会生成一个与源代码文件同名的可执行文件。例如,如果你的 Go 源文件是main.go,编译后会生成一个名为main的可执行文件(在 Linux/macOS 上),或者main.exe(在 Windows 上)。
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec 编译的二进制
参数解释
--listen=:2345:这表示调试服务器将监听本地端口2345,等待外部调试客户端连接。通常,调试客户端通过这个端口连接到调试服务器。
--headless=true:这是告诉dlv以无头模式(headless mode)运行。无头模式意味着不启动图形化的调试界面,而是通过命令行或远程工具进行调试。
--api-version=2:这是指定dlv使用 API 版本 2。API 版本 2 提供了更多功能和支持,用于更高版本的dlv和调试器之间的兼容。
--accept-multiclient:允许多个客户端连接到同一个调试会话。通常,如果不加这个选项,dlv只允许一个客户端连接。
exec 编译的二进制:exec后跟的是二进制文件的路径。这个二进制文件是已经通过go build或其他构建工具编译后的程序。
然后打开ide的调试工具

然后正常调试即可
