乐趣区

关于goland:goland-debug-崩溃

这两天遇到一个诡异的问题,也是诡异中解决的,尽管问题没了,然而也不晓得是咋好的。
前一秒还在 debug,加了两行代码,再执行 debug 的时候,总是执行几步就解体。每次蹦的时候,console 提醒还都不一样,回顾下,大略有这么几种:
1,unexpected signal during runtime execution
2, SIGTRAP: trace trap
3, signal SIGSEGV: segmentation violation
4,Cgo tool test2json: signal: interrupt
5, debugger disconnected unexpectedly
6, runtime.debugCallV2()

反正每次都会变着花色的给出错误信息。

每个都 google 了一圈,除了看不懂的,看的懂的都试了一遍:
1,卸载现有 1.16 版本 golang,装置 go 1.17 版。
我用的这个命令装置的,
brew install go@1.17

在大佬的演示下,晓得了一种新的装置形式,在 goland 中,comd+, 组合键,弹出这个框框

按➕,选好 version,指定好 location。就能装置了。

而后就是配置 go 环境变量,放到 ~/.zshrc 中

#go 环境配置
export GOROOT="/Users/didi/go/go1.17.13"
export GOPATH="/Users/didi/project/dp/go/"
export GOBIN="$GOROOT/bin"
export PATH="$PATH:$GOBIN"
export GOSUMDB=off

另外配一下 goland 的 gopath,要把本人的代码根目录蕴含进去

而后就是 gomodules 了,各家公司都不一样

折腾一圈,有效!

2,重装 goland ide。
有效!

3,go get -v github.com/go-delve/delve/cmd/dlv
这个应该是重装 dlv 的吧。dlv 就是一个 go 的一个调试的组件,我目前先这么了解。

到此我曾经放弃了。

4,参考这篇文章
https://youtrack.jetbrains.co…
给出的步骤折腾 goland。
a, add “#com.goide.dlv.DlvVm” (without quotes) in Help | Debug Log Settings... dialog
b, restart the IDE.
c, recreate the problem
d, collect logs using Help | Collect Logs and Diagnostic Data menu item and attach them here.

这个 idea.log 中,有一堆 symbol index 无奈找到的谬误,应该变量符号表地址给搞错了(纯属瞎猜),反正怎么解我也不晓得,还有 一些 dlv 记录的什么信息,咱也看不懂。

5,最初大佬突发奇想,在 *_test.go 文件中减少了一个 单测函数。
单步执行该函数,顺利走完。而后再执行之前解体的 case,也是顺利走完。
不得不拜服,大佬就是出人意料的解决问题。
之前出错,猜想有可能是某次意外导致有 go 携程内存越界啥的,而后给其余携程发送信号。猜想有可能是缓存啥的,加了个新测试函数,把之前出错的局部给笼罩了。

总结:
1,出问题的起因是啥,不晓得,怎么解决的,就是 5,为啥能解决,不晓得。
2,跟着大佬学到了很多。
3,记录下最初那个办法,当前在不明所以的状况下,试试。

退出移动版