我希望有人能向我解释Golang堆栈跟踪的一个小细节,但大部分我所读的教程都忽略了。
我得到的堆栈跟踪示例:
1 2 3 4 5 6 7 8 9 10 | goroutine 6 [running]: net/http.(*conn).serve.func1(0xc42005ad00) /usr/local/go/src/net/http/server.go:1491 +0x12a panic(0x8079e0, 0xc42000c0c0) /usr/local/go/src/runtime/panic.go:458 +0x243 usos-shop-back/usosapi.GetJson(0x0, 0x7d7820, 0xc4202f6d00, 0x0, 0x0) /root/go/src/usos-shop-back/usosapi/usos-hackery.go:20 +0x38 ... ... ... |
所以我真的很好奇
谢谢,
R.C.
附言:恐慌是由指向
- 它是堆栈框架PC和功能输入PC之间的区别。 (特定于实现的堆栈跟踪格式可能不是StackOverflow的好问题)
- @JimB,谢谢,那时我有一些维基文章可供阅读。 但是我想知道为什么对SO来说这不是一个好问题吗? 会导致火焰大战吗? 还有其他的XYZexchange吗?
- 该主题更多的是灰色区域,主要是因为实现细节可能不适用于所有流行的实现,可以更改,有时变化很快,从而使问题或答案过时和/或产生误导。 并不是说go1的堆栈跟踪格式可能会在此时改变,但是例如其他GODEBUG输出在版本之间已经发生了显着变化,因为它需要反映实现。
It's the difference between the stack frame PC and the function entry PC.
感谢JimB