我有最新的 IntelliJ Ultimate EAP 和最新的 Gogland,并且在 MacOS Sierra 下都出现了问题。
我正在尝试通过创建调试配置文件来调试 go 应用程序,Go Application
并且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/
当我在第 6 行(主函数中的第一行也是唯一的代码行)选择断点test2.go
并启动调试会话时,我看到以下输出:
"/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 并没有在所需的断点处停止。
该问题在 MacOS Sierra 10.12.4 上使用 Go Lang 插件 0.171.1928 的 Intellij 2017.1.3 上重现。
更新
尝试使用 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
当我打印变量时,我在该行创建一个断点。
有任何想法吗 ?