1. 前期准备
1.1. dlv安装
1.1.1. go install安装
go install github.com/go-delve/delve/cmd/dlv@latest
1.1.2. 手动安装
- 下载
linux
x86 架构 二进制文件
📎dlv.linux.x86.zip zip文件,下载后( 如果没权限,记得 执行chmod a+x ./dlv
)
- 上传到服务上
1.2. 关闭编译器内联优化
-gcflags="-N -l"
1.3. 内存必须至少500M
如果不到500M,dlv会因为内存不足启动不起来
可以使用dmesg
命令查看
另外cpu核数也可以调大一点,否则debug会很慢
2. 方式1:使用dlv启动的方式进行debug
2.1. 登录容器执行命令
./go-gray-test 换成你自己的服务
cd bin/ && /usr/local/go/bin/dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./go-gray-test
执行后,会一直停在这个页面,等待goland连接后再往下走
如果不想remote程序阻塞等debug,而是直接执行,那么可以在启动远程程序的时候添加 --continue
参数
2.2. goland远程连接
2.3. 开始debug
服务启动起来后,远程debug就会生效了
3. 方式2:服务已启动,使用dlv attach方式远程debug
3.1. 登录到服务器,查看go线程id
ps -ef | grep go-gray-test
go-gray-test
为启动服务的可执行文件名
3.2. 启动debug
dlv attach 373 --headless --listen=:2345 --api-version=2 --log=true
执行后会一直停留在这里,等待客户端连接
如果不想remote程序阻塞等debug,而是直接执行,那么可以在启动远程程序的时候添加 --continue
参数
3.3. goland连接
连接之后,server端会打印连接上日志
3.4. 开始debug
服务启动起来后,远程debug就会生效了
4. 方案推荐
建议使用方式2,可以启动后debug,更方便