基於遠端除錯閱讀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
前置條件
本地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通訊遠端除錯此時,返回GoLand客戶端,檢視Debug視窗中,是否顯示正確通訊了。
虛擬機器Ubuntu,再開一個標籤,提交job。
nomad init
會生成example.nomad
cd /root/tmp /root/tmp/nomad init /root/tmp/nomad run example.nomad
此時,如果順利,即處於監聽狀態,返回GoLand客戶端,在斷點處暫停。
返回GoLand客戶端,除錯閱讀程式碼。