基于远程调试阅读Nomad源码_环境搭建

Nomad源码阅读的远程调试环境搭建

简要记录远程调试环境搭建,方便调试,阅读Nomad源码。

环境

Remote

VMWare 14
- 虚拟机 Ubuntu 18.04

虚拟机名local-dev2,IP地址192.168.237.200

Local

Windows 10 Pro,IP地址192.168.237.1

工具

VMWare 14

GoLand 2018.2.2 (自带delve调试工具)

Xshell,SSH密钥连接虚拟机local-dev2

前置条件

  1. 本地Windows安装Go,并配置环境。

    如:本地环境配置为GOROOT=G:\GoGOPATH=G:\Go\gopath

  2. 拉取Nomad源码到GOPATH下相应目录G:\Go\gopath\src\github.com\hashicorp\nomad。注意一定要是%GOPATH%\src目录下,方便GoLand引用nomad\vendor下的依赖。

    源码路径

  3. GoLand导入nomad项目

    GoLand导入源码

    确保导入vendor依赖

    vendor

    可以运行某个单元测试,试试是否运行,编译依赖是否解决。

  4. 安装插件Remote Hosts Access

    remote hosts access插件

  5. 虚拟机Ubuntu安装Go,并配置环境

    例如,GOROOT=/snap/go/2635GOPATH=/root/go

  6. 虚拟机Ubuntu中拉取代码到路径/root/go/src/github.com/hashicorp/nomad/下。

  7. 虚拟机Ubuntu中安装delve,并配置到PATH中,即将/root/go/bin/配置到PATH中。

    安装delve

    go get -u github.com/derekparker/delve/cmd/dlv
  8. 编译用于delve调试的可执行文件

    go build -gcflags "all=-N -l" github.com/hashicorp/nomad

    此时,生成的可执行文件nomad/tmp/root路径下

远程调试

  1. 配置Go Remote远程调试

    go_remote配置

    并在源码中设置断点,至少在一处关键代码中设置断点,方便程序运行时停下。

  2. 虚拟机Ubuntu中执行以下命令,启动server及client

    /tmp/root/nomad agent -dev

    go agent dev

  3. 虚拟机Ubuntu,再开一个标签,设置delve监听。

    找到启动的nomad的PID进程号,此处为10134

    ps aux | grep nomad

    nomad pid

    配置dlv,在2345端口监听与GoLand通信远程调试

    dlv

  4. 此时,返回GoLand客户端,查看Debug窗口中,是否显示正确通信了。

    connected

  5. 虚拟机Ubuntu,再开一个标签,提交job。

    nomad init会生成example.nomad

    cd /root/tmp
    /root/tmp/nomad init
    /root/tmp/nomad run example.nomad

    exampel.nomad

    此时,如果顺利,即处于监听状态,返回GoLand客户端,在断点处暂停。

  6. 返回GoLand客户端,调试阅读代码。

    远程调试

猜你喜欢

转载自blog.csdn.net/u011730792/article/details/82256116
今日推荐