在尝试调试中的恐慌时kubelet
,我一直在尝试附加delve
到kubelet
可执行文件但未成功:
me@mycomputer:~$ sudo dlv attach 23796
could not attach to pid 23796: could not open debug info
file
并objdump --syms
显示没有调试信息包含在kubelet
:
me@mycomputer:~$ file _output/bin/kubelet
_output/bin/kubelet: ELF 64-bit LSB executable, x86-64, version 1
(SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2,
BuildID[sha1]=c7a1645940f91048eea9086bd0500deb7ec75b38, for
GNU/Linux 3.2.0, stripped
me@mycomputer:~$ objdump --syms _output/bin/kubelet
_output/bin/kubelet: file format elf64-x86-64
SYMBOL TABLE:
no symbols
我在构建时尝试了不同的选择kubelet
:
make WHAT=cmd/kubelet GOGCFLAGS=-dwarf
或者:
make WHAT=cmd/kubelet GOFLAGS=-dwarf
但仍然没有调试信息包含在可执行文件中。在我看来,该-w
选项默认包含在 中go tool link
,它去除了 DWARF 符号表以节省最终的可执行文件大小(请参见此处)。但我无法扭转这一点。
关于我应该如何构建kubelet
以包含调试信息的任何想法?