window下联调linux下的应用

211 阅读2分钟
  • 应用开发环境:

    • 操作系统: windows
    • 工具:vscode + dlv插件
  • 应用发布环境:

预期效果

使用windows下的vscode远程联调、断点跟踪发布在centos上的应用,就像本地调试一样!

以下是步骤:

  1. 进入centos系统,将您的应用的源文件拷贝到某个目录下,假设目录为/home/eqt/test/remoteApp/
  2. 在此目录下使用go build编译你的应用, 得到一个可执行文件
  3. 使用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的源码一样,你的断点就是打在这个源码的脸上)
  1. 在你的vscode中像本地调试一样,打上所需的断点吧。按F5启动!启动成功后,你可以在centos的终端上看到你的应用的启动日志。

其它

dlv包含很多命令,你可能还会用到dlv debug命令,其与dlv exec的区别在于,前者会在启动一个调试终端前先编译你的应用,如果在编译时需要传递参数,可以使用--build-flags参数。形如: dlv debug --build-flags --flags=dev xxxx