goland debug 变量 unreadable invalid interface type
一、问题
最近开发工具 idea goland 突然就“抽筋”了, 也不知道为什么,之前项目进行 debug 都是正常的,现在突然就出现变量展示错误:
unreadable invalid: interface type
意思是这个类型错误,无法正确读取
但是通过打印日志,发现数据值是可以正常的
报错如下图:
二、原因
从官方的 issue 中发现:这个问题只能通过升级 goland 来解决(但是我并不想升级)
https://youtrack.jetbrains.com/issue/GO-17798/Unreadable-invalid-interface-type-in-Debugger
又从 go debug issues 中也发现了这个问题,
https://github.com/go-delve/delve/issues/2593
最后得出的结论:
golang 的版本较高,而本地使用的 goland 版本较低(它内置了某个版本的 debug 工具)所以导致用旧的 debug 工具去debug 新的 golang 就会出现这个问题
现在想一想最近确实升级了 golang 版本,尝试切换 goalng 历史版本后确实能够正常 debug (原因算是实锤了)
三、解决
-
(推荐,兼容好,风险小)升级 idea goland 版本
-
goland 工具内置的 dlv debug 替换为新版本的 dlv debug 工具
最终我还是选择用这个方式
首先,下载最新 dlv debug工具
go install github.com/go-delve/delve/cmd/dlv@latest
执行成功后,$GOPATH/bin 目录下会多一个 dlv (我这里是 mac,win 应该会有后缀.exe ,也有的是 delve.exe)
Goland 配置使用自定义 debug 工具
打开 goland,配置 dlv 的执行路径: 菜单选择 help >> Edit Custom Properties
在文本的最后添加以下内容:
custom GoLand properties (expand/override 'bin/idea.properties') dlv.path=$(你的GOPATH)/bin/dlv
然后重启 goland 即可
⚠️⚠️⚠️注意:
dlv 是 $GOPATH/bin目录的可执行文件,如果配置重启后报错找不到,需要打开目录检查是否有该文件,可能会存在类似的名称(windows 可能是 delve.exe)
建议在打开 【Edit Custom Properties】 文件时,先右键–> Open in 打开在本地目录
找到该文件所在的电脑位置,要不然等下你要是改错了,goland 直接就启动不了,真的很无助,一旦启动不了,你找到本地刚才修改的 idea.properties ,删除错误的配置,再重启就可以了
到这里几乎算解决了,但是感觉不是很完美…
要是能够将下载的 dlv 文件直接替换 goland 内置的 dlv,岂不是更好???(Mac 试过是没办法,但是windows 应该是可以的,找到内置 dlv 工具的目录,直接替换文件应该就可以,不过没试过,有没有试过的可以分享下)
你们觉得还有什么好的解决方法吗?欢迎👏大家评论区一起分享!!!
版权声明
未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!
本文原文链接: https://fiveyoboy.com/articles/go-idea-goland-debug-err-1/
备用原文链接: https://blog.fiveyoboy.com/articles/go-idea-goland-debug-err-1/