有时候我么需要远程调试golang程序,比如我们在macos写的代码,但是有时在linux上运行的,所以我们需要远程调试运行在linux系统的代码。另外一种情况是我们可以把goalng打包到docker 镜像中,代码跑在容器中同样可以调试。以goland为例。

remote debug

远程调试golang代码需要在运行代码的远程机器上按照delve,然后以delve运行要调试的程序。

  • 编译
   export CGO_ENABLED=0 GOOS=linux GOARCH=amd64
   go build -gcflags='all -N -l' main.go
  • install delve
   go get go get -u github.com/derekparker/delve/cmd/dlv 
  • delve 运行程序
 dlv --listen=:2345 --headless=true --api-version=2 exec ./main
  • goland 设置remote debug
    host为远程主机ip 端口是刚才dlv设置的端口


    屏幕快照 2018-07-03 下午3.57.11.png
  • debug
    然后就像调试本地代码一样调试远程主机上的程序

docker debug