goland 結合 delve遠程 debug go程序

1.原因

有時候項目在服務器中存在很多依賴,有些依賴可能因爲種種原因只能運行在linux環境中,又或者依賴的包太多,總之不方便在本地運行項目,那麼只能夠通過遠程調試了。


2.安裝delve

服務器上運行該命令安裝 delve

go get -u github.com/go-delve/delve/cmd/dlv

3.編譯項目

記得一定要加上 -gcflags='all=-N -l
這裏假設編譯的是main.go

go build -gcflags="all=-N -l"  ./main.go

4.服務器上以debug模式啓動程序

方式一:侵入式調試代碼

就是調試運行中的進程
假設程序main已在運行中
ps -aux | grep main查看main程序的PID,然後啓動侵入調試

dlv attach $PID --headless --api-version=2 --log --listen=:1234

方式二:啓動調試進程

dlv --listen=:1234 --headless=true --api-version=2 --accept-multiclient exec ./main

5.Goland調試

下面這幾步很重要!!!!

指定當前本地項目的GOPATH
在這裏插入圖片描述
在這裏插入圖片描述

添加遠程調試策略
在這裏插入圖片描述

Host,就是遠端服務器的可以聯通的IP地址或機器名;Port,就是剛剛dlv debug啓動時指定的監聽端口
在這裏插入圖片描述

編輯器右上角選擇遠程調試的策略名,就是上一步命名的,然後點擊綠色的蟲子
在這裏插入圖片描述

調試成功
在這裏插入圖片描述

6.結束調試

在本地結束調試後,如果想暫停服務器的程序,CTRL + C 也不能夠終止程序,所以需要強行kill掉服務
ps -aux | grep dlv
ps -aux | grep main
返回
root 27089 8.0 2.1 297472 39812 pts/1 Sl 12:34 0:00 dlv --listen=:8888 --headless=true --api-version=2 --accept-multiclient exec ./main

root 3157 0.0 0.4 148296 8496 pts/1 Sl 11:59 0:00 ./main

然後分別kill掉


7.最後要注意的

本地改完代碼之後遠程服務器一定要重新編譯!!!不然調試的時候會出現這樣的情況
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章