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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

源码路径

  1. GoLand导入nomad项目

GoLand导入源码

确保导入vendor依赖

vendor

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

  1. 安装插件Remote Hosts Access

remote hosts access插件

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

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

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

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

安装delve

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

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

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

远程调试

  1. 配置Go Remote远程调试

go_remote配置

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

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

/tmp/root/nomad agent -dev

go agent dev

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

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

ps aux | grep nomad

nomad pid

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

dlv --listen=:2345 --headless=true --api-version=2 attach 10134 --log

dlv

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

connected

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

nomad init会生成example.nomad

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

exampel.nomad

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

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

远程调试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值