第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 delve 在容器中調(diào)試 Golang:

使用 delve 在容器中調(diào)試 Golang:

Go
Cats萌萌 2022-12-26 10:03:51
我正在嘗試使用內(nèi)置的 Golang 調(diào)試 delve 將我自己的調(diào)試版本 Golang 應(yīng)用程序容器化。這是我如何在本地調(diào)試我的 Golang 應(yīng)用程序,它是一個非常簡單的 RSS 閱讀器。它從我感興趣的 RSS 提要中檢索數(shù)據(jù)。$on my local terminal$ dlv debug parsedata-xml-fp.go  # launch my app with delveType 'help' for list of commands.(dlv) b mainCommand failed: Location "main" ambiguous: main.main, runtime.main…(dlv) b main.mainBreakpoint 1 set at 0x760252 for main.main() ./parsedata-xml-fp.go:50(dlv) c> main.main() ./parsedata-xml-fp.go:50 (hits goroutine(1):1 total:1) (PC: 0x760252)=>  50: func main() {    51:         // [decode from response.Body]    52:         url := "https://foreignpolicy.com/feed/"    53:    54:         var URLset Rss    55:         if xmlBytes, err := getXML(url); err != nil {(dlv) l> main.main() ./parsedata-xml-fp.go:50 (hits goroutine(1):1 total:1) (PC: 0x760252)=>  50: func main() {    51:         // [decode from response.Body]    52:         url := "https://foreignpolicy.com/feed/"    53:    54:         var URLset Rss    55:         if xmlBytes, err := getXML(url); err != nil {(dlv) 在我的本地機器上,我可以設(shè)置斷點并進入我感興趣的函數(shù)。我試圖在我建造的容器內(nèi)做同樣的事情。選項 #1: 下面是我的容器的 Dockerfile#Dockerfile.dlvFROM golang:1.17 AS buildWORKDIR /COPY go/app/parsedata-xml-fp.go .COPY go.mod .COPY go.sum .    RUN go install github.com/go-delve/delve/cmd/dlv@latestRUN go build -gcflags="all=-N -l" -o /feedmeRUN echo $(ls /go/bin)# stage 2 build FROM ubuntu:18.04WORKDIR /EXPOSE 2345 COPY --from=build /go/bin/dlv /dlvCOPY --from=build /feedme /feedmeCOPY --from=build /parsedata-xml-fp.go /parsedata-xml-fp.goCMD ["/dlv", "--listen=:2345", "--headless=true", "--api-version=2", "--accept-multiclient", "exec", "/feedme"]當啟動我的容器并登錄時,出現(xiàn)錯誤:exec: "go": executable file not found in $PATH
查看完整描述

1 回答

?
函數(shù)式編程

TA貢獻1807條經(jīng)驗 獲得超9個贊

問題在于您的dlv二進制文件被動態(tài)編譯。當您使用 下載二進制文件時go install,默認情況下它會下載CGO_ENABLED=1(除非被覆蓋),需要在運行時加載大部分運行時庫(包括 glibc)。這在某些不存在庫的容器鏡像中可能效果不佳(例如從頭構(gòu)建的鏡像/無發(fā)行版靜態(tài)鏡像)。

因此,為了避免與容器鏡像的依賴關(guān)系,請始終通過將上述標志設(shè)置為 0 來下載靜態(tài)編譯的鏡像。在您的 docker 上下文中使用下載的二進制文件

CGO_ENABLED=0 go install github.com/go-delve/delve/cmd/dlv@latest

您還可以觀察靜態(tài)和動態(tài)編譯版本之間的ldd輸出。dlv前者不會列出任何需要動態(tài)加載的庫,后者會列出它們。


查看完整回答
反對 回復 2022-12-26
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號