-
应用开发环境:
- 操作系统: windows
- 工具:vscode + dlv插件
-
应用发布环境:
- Center os 7
- golang
- dlv工具,安装步骤见:github.com/go-delve/de…
预期效果
使用windows下的vscode远程联调、断点跟踪发布在centos上的应用,就像本地调试一样!
以下是步骤:
- 进入centos系统,将您的应用的源文件拷贝到某个目录下,假设目录为/home/eqt/test/remoteApp/
- 在此目录下使用go build编译你的应用, 得到一个可执行文件
- 使用
dlv exec ./你的应用名 --headless --listen=:8281 --log --api-version=2启动端口监听
8281可随意指定,此端口是向window暴露的端口,并不是你的应用的端口。
如果执行dlv时显示找不到命令,请将gopath/bin(安装后的dlv默认会在此目录下)添加至系统变量/etc/profile中
如果你的应用在启动时,需要输入额外的参数,请在上面的命令尾部添加
-- 你的应用的参数,如:dlv exec ./你的应用名 --headless --listen=:8281 --log --api-version=2 -- -dev prop.yaml
4.执行成功后,你的应用并不会没有启动,当前界面会处于等待状态,它在等待一个远端启动调用。
5.回到windows环境,打开你的vscode开发环境,配置lanch.json文件如下:
"version": "0.2.0",
"configurations": [{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "remote",
"program": "${fileDirname}",
"host": "10.1.203.5",
"port": 8281,
"remotePath": "/home/eqt/test/remoteApp/",
"env": {},
"args": []
}]
参数说明:
- mode:请设置为remote,因为你要远程联调
- host: centos的地址
- port:centos中执行dlv时暴露的端口号
- remotePath: centos中你的源码的目录位置(非常重要,一定要设)
- program: 你本地的代码的位置(这个应用与centos的源码一样,你的断点就是打在这个源码的脸上)
- 在你的vscode中像本地调试一样,打上所需的断点吧。按F5启动!启动成功后,你可以在centos的终端上看到你的应用的启动日志。
其它
dlv包含很多命令,你可能还会用到dlv debug命令,其与dlv exec的区别在于,前者会在启动一个调试终端前先编译你的应用,如果在编译时需要传递参数,可以使用--build-flags参数。形如:
dlv debug --build-flags --flags=dev xxxx