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
前置条件
- 本地Windows安装Go,并配置环境。
如:本地环境配置为GOROOT=G:\Go,GOPATH=G:\Go\gopath
- 拉取Nomad源码到
GOPATH下相应目录G:\Go\gopath\src\github.com\hashicorp\nomad。注意一定要是%GOPATH%\src目录下,方便GoLand引用nomad\vendor下的依赖。

- GoLand导入
nomad项目

确保导入vendor依赖

可以运行某个单元测试,试试是否运行,编译依赖是否解决。
- 安装插件Remote Hosts Access

- 虚拟机Ubuntu安装Go,并配置环境
例如,GOROOT=/snap/go/2635,GOPATH=/root/go
-
虚拟机Ubuntu中拉取代码到路径
/root/go/src/github.com/hashicorp/nomad/下。 -
虚拟机Ubuntu中安装delve,并配置到
PATH中,即将/root/go/bin/配置到PATH中。
安装delve
```
go get -u github.com/derekparker/delve/cmd/dlv
```
-
编译用于delve调试的可执行文件
go build -gcflags "all=-N -l" github.com/hashicorp/nomad
此时,生成的可执行文件nomad在/tmp/root路径下
远程调试
- 配置Go Remote远程调试

并在源码中设置断点,至少在一处关键代码中设置断点,方便程序运行时停下。
- 虚拟机Ubuntu中执行以下命令,启动server及client
/tmp/root/nomad agent -dev

- 虚拟机Ubuntu,再开一个标签,设置delve监听。
找到启动的nomad的PID进程号,此处为10134
ps aux | grep nomad

配置dlv,在2345端口监听与GoLand通信远程调试
dlv --listen=:2345 --headless=true --api-version=2 attach 10134 --log

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

- 虚拟机Ubuntu,再开一个标签,提交job。
nomad init会生成example.nomad
```
cd /root/tmp
/root/tmp/nomad init
/root/tmp/nomad run example.nomad
```

此时,如果顺利,即处于监听状态,返回GoLand客户端,在断点处暂停。
- 返回GoLand客户端,调试阅读代码。

本文记录了Nomad源码阅读的远程调试环境搭建过程。包括Remote端的VMWare 14、Ubuntu 18.04虚拟机,Local端的Windows 10 Pro,以及使用的工具如GoLand、Xshell等。还介绍了前置条件,如本地和虚拟机安装Go并配置环境,最后说明了远程调试的具体步骤。
4682

被折叠的 条评论
为什么被折叠?



