如题,之前用 IDEA 的时候,可以用 Drop Frame,直接回到上一个调用栈。
GoLand 貌似没发现这样的功能,感觉 Debug 的时候,貌似没有 Java 调试起来方便啊。
有大佬解决过类似的问题吗
1
Giny 2021-10-12 15:55:07 +08:00
没太懂,GoLand 跟 idea 一个模子刻出来的,debug 哪里有 帧 和变量两个页签啊
|
2
40EaE5uJO3Xt1VVa 2021-10-12 16:11:25 +08:00
不知道是不是孕妇效应,最近看讨论 golang 的越来越多了
|
3
Saxton 2021-10-12 16:33:44 +08:00
@yanzhiling2001 什么是孕妇效应
|
4
janxin 2021-10-12 16:59:19 +08:00 1
https://www.jetbrains.com/help/go/debugging-with-mozilla-rr.html
另外这个功能在是跟实现和系统相关的,在虚拟机语言里只需要做 trace 记录就可以了,比如 Python 就可以实现类似的功能,但是 JNI 这种就用不了你提到的这种功能 |
5
sadfQED2 2021-10-12 17:27:32 +08:00 via Android
@yanzhiling2001 同问什么是孕妇效应
|
6
lisongeee 2021-10-12 17:41:52 +08:00
|
7
dcalsky 2021-10-12 17:53:24 +08:00
@yanzhiling2001 Go 确实越来越火,如果看见讨论的是 Ruby 那就是孕妇效应。
|
9
monetto OP @Giny IDEA 在 Debug 的时候,进入一个函数之后,可以对栈列表中的调用栈,选择 Drop Frame,然后回到函数一开始调用的地方。GoLand 貌似没有提供。
|
10
sadfQED2 2021-10-12 18:25:55 +08:00 via Android
@monetto 这应该不是 goland 的问题,java 是运行在 jvm 里面的,go 是编译成二进制代码的,我觉得应该是 go 语言 debug 就不能实现回跳这种功能
|
11
neoblackcap 2021-10-12 21:31:46 +08:00
@sadfQED2 这功能理论上不依赖 go 实现。C/C++是有的,叫 rr 。不过实现调试的时间穿越功能对性能已经并发的影响很大,如果语言本身没有开洞,怕是不好搞。
|