利用delve(dlv)在Visual Code中進行g(shù)o程序的遠程調(diào)試-exec方式

dlv支持debug吗氏、attach和exec三種方式幅垮。其中乌昔,exec方式類似于gdb /path/to/program隙疚,可以讓調(diào)試器(dlv)去啟動目標(biāo)程序,然后立即掛載上去進行調(diào)試磕道。類似Java的jwdp中suspend=true的方式供屉,這種方式啟動的程序它不會立即執(zhí)行,而是hold在那里溺蕉,等待調(diào)試器的進一步指令伶丐,非常適合于觀察和研究啟動過程和邏輯。

本文假設(shè)遠端和近端都裝好了dlv疯特,而且Visual Code的debug方案也已經(jīng)添加完畢哗魂。相關(guān)的操作可以參考利用delve(dlv)在Visual Code中進行g(shù)o程序的遠程調(diào)試-debug方式的準(zhǔn)備部分。

環(huán)境

這部分內(nèi)容和attach方式的那一篇一樣

  • 近端
  • Win7 64bit
  • Visual Code 1.32.1 x64
  • Go 1.10
  • dlv 1.2
  • 遠端
  • OpenSuSE 42.1
  • Go 1.10
  • dlv 1.2
  • 示例項目
  • hello/main.go漓雅,內(nèi)容如下
package main

import (
    "fmt"
    "time"
)

const loopTimes = 60

func main() {
    for i := 1; i < loopTimes; i++ {
        time.Sleep(1 * time.Second)
        fmt.Printf("\rLoop %v", i)
    }
    fmt.Println("")
}

準(zhǔn)備01. 編譯目標(biāo)程序

這部分內(nèi)容和attach方式的那一篇一樣录别,做過可以跳過

就像javac和gcc一樣朽色,go編譯器默認會在編譯時,對最終的可執(zhí)行代碼執(zhí)行面向機器的開發(fā)组题,而使得人類進行調(diào)試時不好理解葫男。因此,如果在編譯要被調(diào)試的目標(biāo)程序時崔列,最好禁用掉這些優(yōu)化梢褐。Go 1.10及之后的版本,在編譯時赵讯,加入-gcflags="all=-N -l"選項利职;而之前的版本,則是加入-gcflags="-N -l"選項瘦癌。

在實例項目和環(huán)境中猪贪,我們用的是go 1.10,所以編譯用的命令就變成這樣了讯私。

# 進入實例項目目錄
cd $GOPATH/src/hello

# 執(zhí)行編譯任務(wù)
go build -gcflags="all=-N -l" hello

# 將編譯好的程序拷貝到?jīng)]有源代碼的/tmp目錄下热押,留作后面的步驟使用
mv hello /tmp

準(zhǔn)備02. 啟動目標(biāo)程序

這部分內(nèi)容和attach方式的那一篇一樣,做過可以跳過

這次我們要做的是對“在運行程序”的遠程調(diào)試工作斤寇,所以在調(diào)試開始之前桶癣,需要先把程序運行起來——但也就是單純地按照程序的正常啟動方法就行,不需要額外的參數(shù)或者調(diào)整娘锁。

/tmp/hello

執(zhí)行方法

雖然不再需要代碼牙寞,但與dlv debug一樣,我們需要先在遠端啟動dlv的服務(wù)端莫秆。

dlv exec --headless --listen ":2345" --log --api-version 2 /tmp/hello

畫面顯示類似以下內(nèi)容則說明dlv服務(wù)端已經(jīng)就緒间雀。

API server listening at: [::]:2345
INFO[0000] launching process with args: [/tmp/hello]     layer=debugger

和之前的dlv debug方式一樣,回到Visual Code入debug界面镊屎,選擇“Launch remote”方案后惹挟,點擊啟動來進行g(shù)o debugger,就能啟動遠程調(diào)試了缝驳。

run_debug_in_VCode.gif

總結(jié)

exec方式的作用看起來有點土连锯,但在開發(fā)測試階段,應(yīng)該也有不少情況會用到這個方式用狱。和attach模式一樣要留意运怖,在Visual Code的debug控制欄里點擊Stop按鈕,會終結(jié)掉(可以理解為kill)你正在調(diào)試的目標(biāo)程序夏伊。和attach方式不一樣摇展,想要安全地關(guān)閉調(diào)試的話,目前最好的方法那就是另開一個對話去kill掉dlv而不碰目標(biāo)程序署海。

這里無論是dlv還是Visual Code都沒有記述有更優(yōu)雅的方法吗购,關(guān)閉調(diào)試而留下目標(biāo)程序繼續(xù)運作。畢竟我覺得kill還是一個需要挺多人力砸狞,尤其是避免誤殺而需要的注意力捻勉,的方式。但也可能是我沒看到刀森,如果找著了踱启,我再更新吧。

參考

delve官方對exec方式的幫助

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末研底,一起剝皮案震驚了整個濱河市埠偿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榜晦,老刑警劉巖冠蒋,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乾胶,居然都是意外死亡抖剿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門识窿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斩郎,“玉大人,你說我怎么就攤上這事喻频∷跻耍” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵甥温,是天一觀的道長锻煌。 經(jīng)常有香客問我,道長姻蚓,這世上最難降的妖魔是什么炼幔? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮史简,結(jié)果婚禮上乃秀,老公的妹妹穿的比我還像新娘。我一直安慰自己圆兵,他們只是感情好跺讯,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著殉农,像睡著了一般刀脏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上超凳,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天愈污,我揣著相機與錄音耀态,去河邊找鬼。 笑死暂雹,一個胖子當(dāng)著我的面吹牛首装,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播杭跪,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼仙逻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了涧尿?” 一聲冷哼從身側(cè)響起系奉,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姑廉,沒想到半個月后缺亮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡桥言,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年瞬内,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片限书。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡虫蝶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出倦西,到底是詐尸還是另有隱情能真,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布扰柠,位于F島的核電站粉铐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卤档。R本人自食惡果不足惜蝙泼,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劝枣。 院中可真熱鬧汤踏,春花似錦、人聲如沸舔腾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稳诚。三九已至哗脖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背才避。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工橱夭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桑逝。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓棘劣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肢娘。 傳聞我的和親對象是個殘疾皇子呈础,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

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