【发布时间】:2017-05-18 05:01:19
【问题描述】:
我有最新的 IntelliJ Ultimate EAP 和最新的 Gogland,并且在 MacOS Sierra 下都出现了问题。
我正在尝试通过为 Go Application 创建调试配置文件来调试 go 应用程序,并且 Run Kind 配置为 Package,其中包含当前项目的包名称。
在Go tool arguments 下我配置了-ldflags="-linkmode internal"。
当我在有一些断点的情况下启动调试会话时,它会运行但不会在这些断点处停止。
我错过了什么?
谢谢
更新
好的,我能够通过以下项目重现该问题:
test1.go 包含:
package main
const Numb uint64 = 5
test2.go 包含:
package main
import "fmt"
func main() {
fmt.Println(Numb);
}
我使用以下参数创建了Go Application 运行/调试配置:
Run kind: package
Package: github.com/kfirufk/test
Working Directory: /usr/local/Cellar/go/1.8.1/src/github.com/kfirufk/test/
当我在 test2.go 第 6 行(主函数中的第一行也是唯一的代码行)选择断点并启动调试会话时,我看到以下输出:
"/Users/ufk/Library/Application Support/IntelliJIdea2017.1/Go/lib/dlv/mac/dlv" --listen=localhost:53111 --headless=true exec /private/var/folders/cn/n7rwdd_95_l54s3zdnbxvw040000gn/T/Unnamedgo --
GOROOT=/usr/local/Cellar/go/1.8.1/libexec
GOPATH=/usr/local/opt/go
/usr/local/Cellar/go/1.8.1/libexec/bin/go build -o /private/var/folders/cn/n7rwdd_95_l54s3zdnbxvw040000gn/T/Unnamedgo -gcflags "-N -l" github.com/kfirufk/test
API server listening at: 127.0.0.1:53111
5
我正确地获得了程序的输出,但 Intellij 没有在所需的断点处停止。
在 Intellij 2017.1.3 上使用 Go Lang 插件 0.171.1928 在 MacOS Sierra 10.12.4 上重现该问题。
更新
尝试使用 intellij 的 delve 来更好地理解发生了什么:
/Users/ufk/Library/Application\ Support/IntelliJIdea2017.1/intellij-go/lib/dlv/mac/dlv exec ./test
然后我执行了:
(dlv) step
并收到:
Command failed: could not find FDE for PC 0x78bc000
是我不明白如何使用 delve 还是这里不能正常工作?
更新
是的.. 使用continue 时,调试器可以在 delve 的两个版本(从 homebrew 和 intellij 的版本中安装)上正常工作。但仍然 intellij 的工作原理相同,不会停在断点处。我在打印变量时在test2.go 处创建一个断点。
有什么想法吗?
【问题讨论】:
-
请从运行配置中禁用 ldflags,然后重试。
-
你有什么版本的 IDE/Go 插件?您能否提供有关您尝试调试的应用程序的更多详细信息?它有CGO吗?你在使用符号链接吗?应用程序开源是否能够复制这一点?谢谢
-
@eduncan911 有很多使用 IntelliJ 进行调试(或使用 Go 进行调试)。 ufk你在哪里设置断点,它不起作用?我无法使用您提到的相同设置从 IDE 重新创建问题。但是,如果您打算从命令行使用 delve,则需要运行“继续”而不是“步骤”。
-
gogland #GO-171.4424.55(2017 年 5 月 12 日)遇到了这个问题,真的很讨厌。 Go plugin 171.4424.55.1932 根据这里的建议,我用 brew 升级了 delve 并选择了“使用本机”,现在我又进行了调试。谢谢!
-
@ufk 通过 glide 和调试的目录之间不应该有任何关联。如果你使用 nightly 仍然有问题,请在 Youtrack youtrack.jetbrains.com/issues/Go 上打开一个问题并附上日志,你可以通过帮助 | 找到它们显示登录... 此外,在添加日志之前,请转到帮助 |调试日志设置并添加以下行:#com.goide.dlv.DlvVm
标签: debugging go intellij-idea goland