Go Remote Debugger

一个用于在远程服务器上调试Go程序的VSCode扩展插件,基于dlv调试器。

功能特性
- 🚀 一键构建和部署Go应用程序到远程服务器
- 🐞 使用dlv调试器进行远程调试
- ⚙️ 可配置的远程主机、端口和路径设置
- 📦 支持子项目结构
- 🔧 图形化配置界面
- 🌐 无缝集成VSCode调试体验
前置依赖
- VSCode 1.60.0 或更高版本
- 远程服务器上安装了dlv调试器,且存放目录是/usr/local/bin/dlv
- 本地机器能够通过SSH无密码登录到远程服务器
- 远程服务器支持pkill(否则无法自动清理dlv进程)
安装
方法一:从VSCode市场安装(发布后)
- 打开VSCode
- 进入扩展面板 (Ctrl+Shift+X)
- 搜索 "Go Remote Debugger"
- 点击安装
方法二:本地安装开发版本
- 克隆此仓库到本地
- 在项目根目录运行:
npm install
npm run compile
- 按
F5 在Extension Development Host中运行插件
方法三:打包安装
- 安装vsce工具:
npm install -g vsce
- 打包插件:
vsce package
- 安装生成的vsix文件:
code --install-extension go-remote-debugger-1.0.0.vsix
使用方法
启动调试
- 打开VSCode调试面板 (Ctrl+Shift+D)
- 选择 "Launch and Attach to Remote Server" 配置
- 按F5或点击开始调试按钮
- 插件将自动:
- 构建Go应用程序(交叉编译为Linux平台)
- 部署二进制文件到远程服务器
- 启动远程dlv调试器
- 连接到调试器开始调试
调试流程
- 构建阶段:插件在本地构建Go应用程序,目标平台为Linux
- 部署阶段:通过SSH和SCP将二进制文件传输到远程服务器
- 启动阶段:在远程服务器上启动dlv调试器
- 连接阶段:VSCode连接到远程dlv调试器
- 调试阶段:正常使用VSCode调试功能
- 清理阶段:调试会话结束时清理远程进程
配置示例
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch and Attach to Remote Server",
"type": "dlv-remote",
"request": "launch",
"remotePath": "${workspaceFolder}/apiserver", // 使用本地代码路径
"port": 40002,
"servername": "apiserver",
"serverPath": "/root/debug",
"isSubProject": true,
"host": "10.37.14.157",
"mainPath": "apiserver/cmd",
"cwd": "${workspaceFolder}/apiserver",
"env": ["GO111MODULE=on"],
"args": "-c /etc/volcstack/jedi-apiserver.yml",
"buildArgs": "--tags=debug"
}
]
}
故障排除
连接问题
- 检查远程服务器IP和端口配置是否正确
- 确保远程服务器防火墙允许指定端口的连接
- 验证SSH连接是否正常
部署问题
- 检查远程服务器路径是否存在并具有适当权限
- 确保本地Go环境配置正确
调试问题
- 确认远程服务器上已安装dlv调试器
- 检查dlv版本兼容性
贡献
欢迎提交Issue和Pull Request来改进此插件。
许可证
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。
致谢
| |