goland debug : could not launch process: decoding dwarf section info at offset 0x0: too short

這是一個卡了我兩天的報錯(痛心),先上解決辦法:

解決辦法:

go build去掉參數 -ldflags "-w"

goland啓動的時候會帶上你設置的啓動參數(如果你設置了)

背景:

我有兩個go項目,項目A go版本 (1.13)什麼問題都沒有,項目B (go版本1.10)用ide的debug會報錯如題:

could not launch process: decoding dwarf section info at offset 0x0: too short

過程:

這種問題沒頭腦的問題當然先百度了,其中120%(誇張的說法)的答案是:

拉取並安裝delve(Goland使用的調試工具)新版本,設置ide的配置

當然不符合我的情況了

我把delve的各個版本裝了個遍,go get還經常拉不下來,delve可能還換過地址,網上很多都是老地址,各種花式安裝delve

go版本換了n種組合,ide是本月最新的版本

過程種有些delve版本下連項目A也調試不了了,同樣的錯誤(這種應該確實的版本問題)

我試過跳過ide直接指令執行debug,一樣

搜完了重重複復重重的中文結果,我爬過了牆頭去看隔壁的答案

我在github上的delve和goland的issues的相關問題裏一層一層的爬,stackoverflow的評論一條一條的看

問題答案都指向go、delve、goland的版本和組合問題,但是每種方法都不符合我的情況

最後,我看着兩個項目(一個可以一個不行),找不同,相同ide,go版本換成同一個,我盯着屏幕思索了良久,難道代碼會影響調試工具啓動?感覺走到了玄學領域

我把ide編譯運行執行debug程序的實際指令 拿出來一個字符一個字符的對比,發現瞭如上的啓動參數的不同,此時心中沒有海闊天空,只有mmp

-ldflags "-w"

關於這個指令是幹嘛的,我不知道,是在某次mac更新後啓動報錯時百度告訴我的解決辦法,也不知道爲什麼現在去掉了也沒問題

好累

加上上述參數的gobuild指令(去掉了路徑種個人信息)

$GOROOT/bin/go build -ldflags -w -o /.../ -gcflags "all=-N -l" xxx

 

關於這個問題,我在go-delve/delve 的 iss裏回覆給了一個提問的人,然後一個大佬秒回了我,關鍵應該在於這個-w參數,下邊是原話,垃圾英語水平就不翻譯了

大佬給瞭解釋:

The -w removes the DWARF debugging information from the binary, so essentially you are trying to debug a binary that's not built to be debugable. Don't add the -w flag, or strip the binary, when debugging, and Delve will work as expected.

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