Golang堆栈跟踪详细信息
问题描述:
我希望有人能向我解释Golang的堆栈跟踪的一个小细节,这大部分都被我读过的教程忽略了。堆栈跟踪的 例子我:Golang堆栈跟踪详细信息
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 ... ... ...
所以我真的很好奇什么是+0x12a
,+0x243
,+0x38
的代码行,其中发生错误的次数后的含义。
谢谢, R.C.
P.S:恐慌是由空指针引起func GetJson(*http.Response, interface{}) error
这是堆栈帧PC和功能登录PC之间的区别。 (实现特定的堆栈跟踪格式可能不是StackOverflow的一个好问题) – JimB
@JimB,谢谢,我已经阅读了一些wiki文章。不过,我想知道为什么SO不是一个好问题?它会导致火焰战争吗?还有其他一些XYZexchange吗? –
本主题更多的是灰色地带,主要是因为实现细节可能不适用于所有常用实现,可能会更改,有时会相当快地更改,导致问题或答案过时和/或误导。并不是说go1的堆栈跟踪格式可能会改变,但是例如其他GODEBUG输出在版本之间发生了显着变化,因为它需要反映实现。 – JimB