Debugging 调试二进制文件失败-“无法启动进程:找不到二进制文件中的.debug_行部分”

Debugging 调试二进制文件失败-“无法启动进程:找不到二进制文件中的.debug_行部分”,debugging,go,goland,Debugging,Go,Goland,我与GoLand IDE合作,我有以下简单代码: package main import ( "fmt" "time" ) func main() { start := time.Now() time.Sleep(2 * time.Second) elapsed := time.Since(start) fmt.Println("elapsed: %s", elapsed) } 当我运行它时,它工作正常,我看到了输出。 当我在其中一行中放置

我与GoLand IDE合作,我有以下简单代码:

package main

import (
    "fmt"
    "time"
)


func main() {
    start := time.Now()
    time.Sleep(2 * time.Second)
    elapsed := time.Since(start)
    fmt.Println("elapsed: %s", elapsed)
}
当我运行它时,它工作正常,我看到了输出。 当我在其中一行中放置断点时,收到以下错误:

GOROOT=/usr/local/go #gosetup  
GOPATH=/root/go #gosetup  
/usr/local/go/bin/go build -o /tmp/___go_build_mymain_go -gcflags "all=-N -l" /root/go/src/myproj/mymain.go #gosetup  
/home/myuser/Desktop/GoLand-2018.1.4/plugins/go/lib/dlv/linux/dlv --listen=localhost:35607 --headless=true --api-version=2 --backend=default exec /tmp/___go_build_mymain_go -- #gosetup  
could not launch process: could not find .debug_line section in binary  

Debugger finished with exit code 1  
我没有找到有关此错误的任何信息。 我读过关于在Go中调试的内容,其中提到使用-gcflags all=-N-l


失败的原因是什么

您使用的似乎是GoLand 2018.1.4的过时版本。升级到2018.2.2,问题将消失。

更新dlv go get-u github.com/derekparker/delve/cmd/dlvI正在运行2018.1.4。安装2018.2.2后,它现在可以工作了,谢谢。区别是什么?我使用命令行来构建go build-o_debugbuild-gcflags-N-l-v./src/app/,当我运行它时,甚至在打开goland之前,我都会收到相同的错误。以前,它会阻止执行,直到goland尝试连接我不确定我是否理解在您的情况下会发生什么,但在最初的问题中,问题是Delve的内置版本是使用较旧版本的Go编译的,升级IDE允许Delve更新为使用最新可用版本编译的版本。此外,根据您使用的Go版本,命令应该是'Go build-o binary-gcflags=all=-N-l-v./src/app',以确保二进制文件中的所有包都应用了'-N-l`标志,这是Go 1.10或更新版本所需要的。