• 如何使用Goland进行远程Go项目线上调试?


     介绍

    有时候本地环境很难实现“完整的线上环境”的现场,怎么使用goland这个“go语言最强IDE”进行远程线上进行Debug呢?这里将给你答案。

    实现步骤

    准备工作

    1.  生产环境的可以跑go项目的机器(远程机)
    2. Goland
    3. dlv 工具

    操作过程

    1. 将你编译好的go语言二进制文件上传到远程机

    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build cmd/myproject.go 

    将项目编译出linux的二进制文件: myproject

    你可以通过scp将你的文件上传到远程机

    scp -i  <二进制文件> <远程机hostname>@<远程机ip>:<远程机存放二进制文件的路径>

    比如: 

     scp  -i ~/work/share/sshkey/mykey.sshkey  ./myproject  centos@my-node:/home/myfold/myproject

     

    远程机要能够运行go语言项目,需要安装go编译器,如何在linux安装go 编译器,如果是ubuntu系统可以参考:

    How to install Go [golang] on Ubuntu Linux

    2. 在远程机器上本地安装dlv 工具

    dlv的官方地址可以参考:全球最大同性交友网站的github

    具体过程为:

    1. $ git clone https://github.com/go-delve/delve
    2. $ cd delve
    3. $ go install github.com/go-delve/delve/cmd/dlv

    golang 1.16或者后面版本可以参考:

    1. # Install the latest release:
    2. $ go install github.com/go-delve/delve/cmd/dlv@latest
    3. # Install at tree head:
    4. $ go install github.com/go-delve/delve/cmd/dlv@master
    5. # Install at a specific version or pseudo-version:
    6. $ go install github.com/go-delve/delve/cmd/dlv@v1.7.3
    7. $ go install github.com/go-delve/delve/cmd/dlv@v1.7.4-0.20211208103735-2f13672765fe

    3. 在远程机上运行golang项目

    - 将golang二进制在远程机上运行。

    ~/go/bin/dlv --listen=:2345 --headless=true --api-version=2 exec ./myproject 

    我们可以发现,远程机的dlv工具(服务端)使用2345 端口为提供一个用于远程myproject 的服务,用于本地dlv(客户端)的连接。

     4. 本地使用tunnel 代理连接远程机器连接 (如果不需要代理,可以忽略这一步)

    本地的tunnel可以使用ssh 来完成:

    ssh -L 2345:<远程代理的机器>:2345 -N -i ~/.ssh/sshkey <远程机hostname>@<远程机ip>

    这样一来,本地就可以用2345端口连接跟远程机器的23452345端口联通。

    5. 本地配置goland 实现远程线上debug

    打开goland (mac 版本):

    goland- > Run -> edit Configurations... -> 新增一个run 配置 ;

    然后使用本地的2345 端口来进行debug。(由于你使用代理或者直接连接2345来连接远程机的2345端口,所以你要配置这个端口来进行)

     

    然后就可以在本地goland 设置断点,然后点击debug进行在线debug了。

    注意:

    本地的代码必须和远程机上的go程序二进制完全相同。如果本地代码变动了,必须再重新编译一个新的二进制代码到远程机上,二者必须实时相同。

  • 相关阅读:
    python基础总结(二)
    【C++】继承基础知识一遍过
    Zebec Protocol 成非洲利比亚展会合作伙伴,并将向第三世界国家布局
    瑞吉外卖 —— 12、项目优化:主从复制、读写分离
    数据结构之红黑树
    小车PWM调速-模式选择
    玩转Vue3全家桶开篇词丨如何借助Vue3建构你的前端知识体系?
    基于linux系统的CAN总线移动机器人- 板子烧入linux系统
    国家数据局国考招录12人;两万字全景讲解Agent;当基座LLM公司开始转2C;「霉霉说中文」视频的3种实现方案 | ShowMeAI日报
    前端项目部署
  • 原文地址:https://blog.csdn.net/weixin_38976558/article/details/127798045