8

我用: 构建了我的二进制文件,在go build -gcflags "$gc_flags" -o ./bin/grafana-server ./pkg/cmd/grafana-server哪里。$gc_flags'-N -l'

当我./bin/grafana-server在调试器(Goland)中运行此文件并附加到它时,并非所有符号都已加载。此外,一些断点会显示以下消息:

/Users/.../file.go:186 处没有代码

我想调试的代码如下:

在此处输入图像描述

添加到原始项目的部分是 lines 186-199。您可以看到执行已进入for _, ..循环(第 196 行),表明它query有数据,我们能够使用它从数据库中提取数据queryvia repo.Find(query)。但是,query在我的调试器中找不到:

在此处输入图像描述

所以我不确定此时发生了什么。不幸的是,我对 golang 真的很陌生;这让我很难取得任何进展。

4

1 回答 1

10

在使用 Go 1.10 或更高版本时,为了获得更好的调试体验并消除编译器所做的优化,您需要使用-gcflags="all=-N -l".

在 Go 1.10 之前,您需要使用-gcflags="-N -l".

IDE 在编译应用程序以进行调试时会自动添加这些标志。

于 2018-04-23T17:31:05.337 回答