Отладка `dockerd` с` dlv` завершается неудачно - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь понять что-то внутри dockerd, используя dlv отладчик. К сожалению, каждый раз, когда я пытаюсь это сделать, я сталкиваюсь с ошибками. Я не могу сделать dlv exec, ни dlv 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 attach 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

1 Ответ

0 голосов
/ 03 мая 2020

Итак, это произошло из-за LDFLAGS и наличия флага -w, используемого при выполнении go build.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...