我有最新的IntelliJ终极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行(main函数中的第一行也是唯一一行代码)选择断点并启动调试会话时,我看到以下输出:
"/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的钻研来更好地理解正在发生的事情:
/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
在这行当我打印变量.
有什么想法吗?
6条答案
按热度按时间dly7yett1#
我终于明白了。我把GOROOT结构和GOPATH结构弄混了,我把我的项目放在GOROOT而不是GOPATH中。
这是我解决问题的方法
我用
brew uninstall --force go
完全删除了go,然后用以下环境变量重新安装了go:然后我将项目放在
~/golang/src/github.com/kfirufk/windy-server
我终于能够正确地调试go应用程序了。
谢谢你们所有人的协助!:)
6ioyuze22#
对于我的情况(Ubuntu 20.04上的VSCode),如果项目位于符号链接目录(或符号目录的子目录)中,则vscode将显示“未验证”断点和
“创建断点时出错:找不到文件...”
这导致在断点处不停止。
会没事的。
hsvhsicv3#
对我来说,添加以下内容可解决问题:
到$HOME/. profile文件。
编辑:我使用的是LiteIde X35.2,带有Delve调试器版本:1.1.0构建:编号:1990
下:
分发= Linux Mint版本= 18.3代码名称= sylvia
发布版本= #41~16.04.1-Ubuntu SMP星期三2018年10月10日20:16:04 UTC UBUNTU代码= xenial内核= 4.15.0 - 38-通用HDWPLATFORM = x86_64
桌面会话= XFCE WINDOWS_MANAGER = XFWM4桌面组件= kdevtmpfs gnome密钥环-d xfce4-会话xfce4-面板xfce4-卷式polkit-gnome-auxfce4-power-man xfce4-终端gnome-pty-helpe
GTK = libgtk-3 - 0:amd64 3.18.9 - 1ubuntu3.3 GStreamer = gst-启动-1.0版本1.8.3 GStreamer 1.8.3 https://launchpad.net/distros/ubuntu/+source/gstreamer1.0
blpfk2vs4#
在我的例子中,这个进程已经在那个端口运行,并且没有关闭,所以我不得不手动停止这个进程,然后从IntelliJ重新运行。
67up9zun5#
在我的例子(GoLand)中,问题是在我的调试配置中没有设置标志
-trimpath
:1."运行"、"调试..."、"编辑配置"
1.在模板项中,转到"Go Test"选项,并在"Go工具参数"中添加参数
-trimpath
您还可以在您的环境中使用设置:
这也适用于"attach to process"调试选项。
你可以在菜单"帮助"、"显示日志文件"中看到GoLand IDE日志。它会让你的生活更轻松。
参考:https://youtrack.jetbrains.com/issue/GO-8277
8qgya5xd6#
同样的问题。
GoLand 2022.3.2构建版本号GO-223.8617.58,构建日期:2023年1月27日
降级转到1.19.7版本进行修复。