登录
首页 >  Golang >  Go问答

dlv调试dockerd遇到问题

来源:stackoverflow

时间:2024-03-15 13:45:26 246浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《dlv调试dockerd遇到问题》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我试图使用 dlv 调试器来理解 dockerd 内部的某些内容。不幸的是,每次我尝试这样做时都会遇到错误。我无法执行 dlv execdlv attach

以下差异显示了我应用于 docker/docker 的一些更改,以确保避免一些 go 优化并可以进行调试:

diff --git i/hack/make/.binary w/hack/make/.binary
index d56e3f3..e6835fa 100644
--- i/hack/make/.binary
+++ w/hack/make/.binary
@@ -84,6 +84,7 @@ hash_files() {
        go build \
                -o "$dest/$binary_fullname" \
                "${buildflags[@]}" \
+               -gcflags="all=-n -l" \
                -ldflags "
                $ldflags
                $ldflags_static_docker

我还修改了 dockerd-rootless.sh 以确保我不使用普通的 exec 而是 dlv exec dockerd -- $@。不幸的是,每次我都会收到以下错误:

could not create config directory: mkdir /root/.config: permission denied.could not launch process: could not get .debug_frame section: could not find .debug_frame section

当我尝试 dlv 附加 docker-pid 时,会发生同样的错误:

could not attach to pid 228089: could not get .debug_frame section: could not find .debug_frame section

有人知道可能是什么原因造成的吗?

信息:

uname -a

linux host 5.6.8-200.fc31.x86_64 #1 smp wed apr 29 19:10:01 utc 2020 x86_64 x86_64 x86_64 gnu/linux
go version

go version go1.13.10 linux/amd64
dlv version

delve debugger
version: 1.4.0
build: $id: 67422e6f7148fa1efa0eac1423ab5594b223d93b $
docker version

Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b7f0
 Built:             Wed Mar 11 01:27:05 2020
 OS/Arch:           linux/amd64
 Experimental:      false

解决方案


因此,这是由于 LDFLAGS 以及执行 go build 时使用的 -w 标志造成的。

以上就是《dlv调试dockerd遇到问题》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>