4

#Others# GoLand + DevCloud 的远程开发与调试

 2 years ago
source link: https://lottewong.github.io/2021/08/12/GoLand%20+%20DevCloud%20%E7%9A%84%E8%BF%9C%E7%A8%8B%E5%BC%80%E5%8F%91%E4%B8%8E%E8%B0%83%E8%AF%95/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
#Others# GoLand + DevCloud 的远程开发与调试
9 months ago 6 minutes read (About 835 words) 17 visits

#Others# GoLand + DevCloud 的远程开发与调试

  • GoLand as IDE
  • DevCloud as go run/go build/dlv debug environment

前言

缘起一个 EOF 错误,由于网络策略原因,本地开发机无法连接某个内网服务,遂转向在办公网内的远程服务器。本人作为 Linux 小菜,由此产生了一个新诉求:在 Windows 上远程开发和调试服务器的代码,充分地发挥 IDE 的强大作用。

环境准备

  1. GoLand 2020.2.3
  1. Go 1.16.6
  2. Delve 1.7.0

配置 GoLand 连接 DevCloud

创建 Deployment 配置

Tools -> Deployment -> Configuration -> +

Connection - 网络连接

  • Type:选择 SFTP 协议
  • SSH configuration:填写 Host / Port / User name / Password 信息,通过 Test Connection 验证
  • Root path:点击 Autodetect 按钮
  • Web server URL:暂时不用考虑

Mappings - 存储映射

  • Local path:本地开发机项目目录

  • Deployment path:远程服务器项目目录

  • Web path:暂时不用考虑

创建 Run/Debug 配置

Run -> Edit Configurations -> + -> Go Remote

  • Host:远程服务器地址

  • Port:Delve Port

登录、查看和同步

登录远程服务器

Tool -> Start SSH Session

查看远程目录树

Tools -> Deployment -> Browse Remote Host

同步本地文件夹

手动Tools -> Deployment -> Sync with Deployed to DevCloud

自动Tools -> Deployment -> Automatic Upload (on explicit save)

部署与调试

远程执行部署脚本

编译调试一起

dlv debug cmd/server/main.go --headless --listen=:2345 --api-version=2

先编译再调试

go build -o cmd/server/demo.exe cmd/server/main.go
dlv --listen=:2345 --headless=true --api-version=2 exec cmd/server/demo.exe

进程后台操作

nohup dlv debug cmd/server/main.go --headless --listen=:2345 --api-version=2 >> ./demo.log 2>&1 & # 后台启动
pkill -9 dlv # 后台暂停

完整脚本文件

  • start.sh

    #!/bin/bash

    # set go env
    export GO111MODULE=auto
    export GOPROXY=https://goproxy.io,direct
    go mod tidy
    go mod vendor

    # kill processes already started
    pkill -9 dlv

    # run demo backgroud server
    nohup dlv debug cmd/server/main.go --headless --listen=:2345 --api-version=2 >> ./demo.log 2>&1 &
    echo 'nohup dlv debug cmd/server/main.go --headless --listen=:2345 --api-version=2 >> ./demo.log 2>&1 &'
  • stop.sh

    #!/bin/bash

    # kill processes already started
    pkill -9 dlv

本地打开调试模式

PS:这里需要注意,go run 的时候返回数据到 Postmandlv debug 的时候返回数据到 GoLand

具体流程

  1. 配置好 DeploymentRun/Debug
  2. 修改本地代码文件,手动或自动同步内容到远程
  3. 登录远程服务器,一键执行部署脚本
  4. 本地打好断点,开启调试模式

附录

GoLand Debug

  1. 开启调试模式Shift + F9
  2. 打下断点:点击 Code 左侧
  3. 查看变量:查看 Debug 面板
  4. Step OverF8
  5. Step IntoF7
  6. Step OutShift + F8
  7. 下一个断点处F9

Delve Debug

  1. 开启调试模式dlv debug main.go
  2. 打下断点break pkg.fnbreak file:line
  3. 查看变量print varargslocals
  4. Step Overnext
  5. Step Intostep
  6. Step Outstepout
  7. 下一个断点处continue

参考文献


Comments

Related Issues not found

Please contact @LotteWong to initialize the comment


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK