配置虚拟机
安装golang编译环境
安装dlv
官方地址:https://github.com/go-delve/delve 根据官方指导下载即可
手动运行
goland的调试下拉框有个“Edit Confignations” 点开,弹窗点击“+”号按钮,选“Go Remote”,显示如下对话框
Host填写远程服务器的ip或域名等;
Port为dlv的--listen参数的端口.
编译参数
根据上面图片的提示,有两种运行程序的方法。
第一 直接让dlv编译并运行程序
dlv debug --headless --listen=:2345 --api-version=2 --accept-multiclient
第二 手动编译并执行
在服务器上编译程序,必须添加-gcflags参数,给编译器传递-N -l参数,禁止编译器优化和内联
go build -gcflags "all=-N -l" github.com/app/demo
然后,使用dlv运行编译好的程序
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./demo
如果要给程序传递参数则需要再命令末尾追加“--”,如下面代码所示
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./demo -- command1 --param1=val1
手动运行方式总结
这种方式虽然看起来很复杂,但是实际开发中可能会比较灵活,比如,我们可能是配置了一个虚拟机来模拟实际的运行环境,这样可以通过共享目录的方式将代码输出到虚拟机环境,只需执行一个命令即可开始调试。
Goland自动build并编译
其实go build的功能有个选项可以支持远程编译,经过测试有个问题,在设置的远程服务器目录中,会创建很多临时目录并且编译的结果也会放在临时目录中,如果需要依赖某些配置文件则不方便使用。这时候如果程序的配置等参数,可通过命令行参数传入,就比较好用了。