在偏移量 0x0 处解码矮部分信息:太短

decoding dwarf section info at offset 0x0: too short

我正在使用 JetBrains GoLand 并尝试调试我的 go 文件,但出现以下错误:

decoding dwarf section info at offset 0x0: too short

我试图在 Whosebug 上找到答案,但不幸的是,我没有得到任何解决方案。

GoLand 附带捆绑版本的 Delve。更新到 2018.2.2,它应该可以工作。如果您需要进行远程调试,那么您还需要更新您的 Delve 安装 on/for 目标机器(确保您使用 Go 1.11 编译它)。

编辑: 还有两种可能会出现此问题的情况:

  • 应用程序是在关闭所有调试标志并删除附加调试信息的情况下编译的
  • 应用程序使用标准库 "plugin" 包,已知这会导致 Go 编译器出现问题。这将在 Go 1.12 中修复。

我也想在这里分享我的经验,因为它可能对社区有帮助,我通过执行以下操作使它起作用:

  • 将 Goland 更新为 18.3
  • 另外,如果你有 Mac,你应该 运行 xcode-select --install
  • 如果您已经在 GOPATH/bin 中安装了 delv,请将其移除并按照说明重新安装 here

经过几个小时的努力,我找到了问题所在。这是由于 Golang 插件已被弃用并且与 IntelliJ IDEA 2018.2.2(终极版)不兼容。

我卸载了插件并重新安装了 IntelliJ。 希望这对上述解决方案也有帮助。

对于我的Mac,问题与 Golang 插件安装的 dlv 包有关。

  • 安装 delv
  • 检查 IntelliJ 执行的 dlv 路径(在控制台中)。

转到这个目录

($HOME//Library/Application Support/IntelliJIdea2017.3/intellij-go/lib/dlv/mac) 
  • 并将 dlv 重命名为任何其他名称。使用

    获取正确的 dlv 可执行文件
    which dlv (/usr/local/Cellar/go/1.11.1/libexec/bin/dlv for my computer) 
    
  • 并添加符号 link

    (ln -s /usr/local/Cellar/go/1.11.1/libexec/bin/dlv dlv).