首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用`dlv`调试`dockerd`失败

使用`dlv`调试`dockerd`失败
EN

Stack Overflow用户
提问于 2020-05-03 23:42:46
回答 1查看 211关注 0票数 0

我正在尝试使用dlv调试器来理解dockerd中的一些东西。不幸的是,每次我尝试这样做的时候,我都会遇到错误。我既不会dlv exec也不会dlv attach

下面的比较显示了我应用于docker/docker的一些更改,以确保避免某些go优化,并使调试成为可能:

代码语言:javascript
复制
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 -- $@。不幸的是,每次我都会得到以下错误:

代码语言:javascript
复制
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 attach docker-pid时,同样的错误也发生了

代码语言:javascript
复制
could not attach to pid 228089: could not get .debug_frame section: could not find .debug_frame section

有谁知道是什么原因造成的吗?

信息:

代码语言:javascript
复制
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
代码语言:javascript
复制
go version

go version go1.13.10 linux/amd64
代码语言:javascript
复制
dlv version

Delve Debugger
Version: 1.4.0
Build: $Id: 67422e6f7148fa1efa0eac1423ab5594b223d93b $
代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-04 03:08:58

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61577209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档