所以我想调试一个在k8s集群上运行的golang应用程序,但是当我想附加到应用程序时,我收到错误消息。在 k8s 部署中,我添加了所需的权限: securityContext: capabilities: add: - SYS_PTRACE privileged: true runAsUser: 0 allowPrivilegeEscalation: true我用所需的 gcflags “all=-N -l” 编译了我的应用程序go build -mod vendor -gcflags "all=-N -l" --ldflags -w -s -o app我用以下命令开始 pod:dlv --listen=:40000 --headless=true --api-version=2 --accept-multiclient exec /app我验证了我运行正确的容器映像,它是我推送的相同SHA哈希。我验证了哈希值在这里也匹配的正确二进制文件。我设置:echo 0 > /proc/sys/kernel/yama/ptrace_scopecat /proc/sys/kernel/yama/ptrace_scope0下面是二进制文件的输出。readelf -S app
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
您将作为标志传递给链接器。-s -w
根据cmd/link的文档:
-s:省略符号表和调试信息。
-w:省略矮人符号表。
简而言之,生成命令将删除调试器调试所需的信息。
如果删除(或仅删除 ),它应该按预期工作。-ldflags-s -w
- 1 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消
