VS Code遠(yuǎn)程調(diào)試golang代碼

一哎甲、前言
本文介紹了在本地主機(jī)VS Code編輯器中進(jìn)行g(shù)olang代碼遠(yuǎn)程調(diào)試的方法。
vs code的運(yùn)行環(huán)境是windows饲嗽,被調(diào)試代碼的運(yùn)行環(huán)境是centos炭玫。go版本為1.13,dlv版本為1.3貌虾。
二吞加、調(diào)試環(huán)境準(zhǔn)備
1.確認(rèn)可以正常使用go get功能(可選步驟)
使用以下命令可以設(shè)置go的代理,該代理的地址非官方提供尽狠,可靠性存疑.
go env -w GOPROXY=https://goproxy.cn,direct
2.被調(diào)試機(jī)設(shè)置環(huán)境變量
1. sudo vim /etc/profile
2. ##編輯文本首行加入如下:
3. export GOPATH=/root/go
4. export PATH={PATH}:{GOPATH}/bin
5. ##wq保存退出
6. sudo source /etc/profile
3.vscode安裝提示所需GO插件

三衔憨、操作步驟
1.在本地主機(jī)和遠(yuǎn)程主機(jī)分別安裝dlv
delve,簡稱dlv是go語言的最常用的調(diào)試器,獲取dlv的操作命令如下:
1. go get -u github.com/derekparker/delve/cmd/dlv
2. #驗(yàn)證dlv安裝
3. dlv version
2.vscode中配置
在vscode中使用打開文件夾模式袄膏。打開源代碼所在文件夾践图。編寫源代碼,代碼編寫完成后復(fù)制到遠(yuǎn)程主機(jī)上沉馆。

一定要保證本地代碼和遠(yuǎn)程代碼一致
在本地主機(jī)中配置遠(yuǎn)程調(diào)試的參數(shù)码党。打開vscode中的調(diào)試側(cè)邊欄,快捷鍵 ctrl+shift+d斥黑。點(diǎn)擊調(diào)試欄中的齒輪按鈕揖盘,
配置調(diào)試連接參數(shù)。此時(shí)vscode中打開了 launch.json 文件的編輯界面锌奴,這個(gè)文件存儲在當(dāng)前文件夾路徑下的 .vscode 目錄中兽狭,
里面可以存儲多組調(diào)試配置。默認(rèn)生成的配置參數(shù)如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileDirname}",
            "env": {},
            "args": []
        }
    ]
}

在vscode中鼠標(biāo)移動到j(luò)son的字段上會提示可以填寫的參數(shù)鹿蜀。這里手動添加一條遠(yuǎn)程調(diào)試的配置箕慧,配置如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${fileDirname}",
            "env": {},
            "args": []
        },
        {
            // 調(diào)試配置的名稱,用作vscode中區(qū)分
            "name": "remotedebug",
            // 調(diào)試類型茴恰,go語言當(dāng)然選擇go
            "type": "go",
            // 調(diào)試請求類型销钝,可以選擇launch啟動調(diào)試和attach附加調(diào)試
            "request": "launch",
            // 調(diào)試模式,這里選擇遠(yuǎn)程調(diào)試
            "mode": "remote",
            // 必填項(xiàng)琐簇,遠(yuǎn)程調(diào)試?yán)锖孟駴]什么用處
            "program": "${fileDirname}",
            // 遠(yuǎn)程連接的端口號
            "port": 2345,
            // 遠(yuǎn)程主機(jī)的ip地址
            "host": "192.168.100.118",
            // 被調(diào)試的代碼在遠(yuǎn)程主機(jī)上的路徑蒸健,必須使用絕對路徑.且具體到指定調(diào)試目錄
            "remotePath": "/root/go/src/test"
        }
    ]
}

3.在遠(yuǎn)程主機(jī)中啟動dlv
cd 到源代碼所在的目錄,這個(gè)目錄要與上一步在vscode中remotePath字段配置的路徑一致運(yùn)行以下命令:
1. dlv debug --headless --listen ":2345" --log --api-version 2
2. ##--headless指定只使用調(diào)試服務(wù)模式婉商,
3. ##--listen指定了調(diào)試服務(wù)的端口似忧,要與vscode的配置一致。
4. ##--log啟用了調(diào)試日志輸出丈秩,可關(guān)閉盯捌。
5. ##--api-version 2選擇調(diào)試api的版本,這里必須指定為2蘑秽,否則不能調(diào)試
6. ##-- 雙減號加空格后填寫程序啟動的參數(shù)
待被調(diào)試機(jī)器出現(xiàn)如下狀態(tài)饺著,可啟動vscode中F5功能鍵進(jìn)行遠(yuǎn)程調(diào)試 箫攀。


image.png

4.進(jìn)行VScode調(diào)試


image.png
? 開始調(diào)試

在vscode中使用 F9 為代碼設(shè)置/取消斷點(diǎn),在調(diào)試欄中選擇之前編輯好的remotedebug調(diào)試配置幼衰,F(xiàn)5開始調(diào)試靴跛,此時(shí)vscode會與遠(yuǎn)程調(diào)試服務(wù)連接,連接成功后程序運(yùn)行并中斷在第一個(gè)斷點(diǎn)處渡嚣。
? 操作快捷鍵
F5 開始調(diào)試
shift + F5 停止調(diào)試
F9 設(shè)置/刪除斷點(diǎn)
F10 跳過
F11 跳入
shift + F11 跳出
? 調(diào)試信息
在調(diào)試欄中可以查看變量值梢睛、調(diào)用堆棧、監(jiān)視列表识椰、斷點(diǎn)列表绝葡;
四、問題解決

  • 使用launch方式遠(yuǎn)程調(diào)試時(shí)腹鹉,
    vscode會提示:Request type of 'launch' with mode 'remote' is deprecated, please use request type 'attach' with mode 'remote' instead.目前看這個(gè)提示暫時(shí)可以不用理會藏畅。
  • 有時(shí)候在launch.json被編輯狀態(tài)時(shí)進(jìn)行調(diào)試會失敗,需要關(guān)閉該文件的編輯功咒。
  • 重啟調(diào)試功能在遠(yuǎn)程調(diào)試中無法使用墓赴,點(diǎn)擊后會不能繼續(xù)調(diào)試,需要重啟vscode航瞭。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诫硕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子刊侯,更是在濱河造成了極大的恐慌章办,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滨彻,死亡現(xiàn)場離奇詭異藕届,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)亭饵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門休偶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辜羊,你說我怎么就攤上這事踏兜。” “怎么了八秃?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵碱妆,是天一觀的道長。 經(jīng)常有香客問我昔驱,道長疹尾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮纳本,結(jié)果婚禮上窍蓝,老公的妹妹穿的比我還像新娘。我一直安慰自己繁成,他們只是感情好吓笙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著朴艰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪混移。 梳的紋絲不亂的頭發(fā)上祠墅,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音歌径,去河邊找鬼毁嗦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛回铛,可吹牛的內(nèi)容都是我干的狗准。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茵肃,長吁一口氣:“原來是場噩夢啊……” “哼腔长!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起验残,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤捞附,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后您没,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸟召,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年氨鹏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了欧募。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仆抵,死狀恐怖跟继,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情镣丑,我是刑警寧澤还栓,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站传轰,受9級特大地震影響剩盒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一辽聊、第九天 我趴在偏房一處隱蔽的房頂上張望纪挎。 院中可真熱鬧,春花似錦跟匆、人聲如沸异袄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烤蜕。三九已至,卻和暖如春迹冤,著一層夾襖步出監(jiān)牢的瞬間讽营,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工泡徙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留橱鹏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓堪藐,卻偏偏與公主長得像莉兰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子礁竞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容