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

+2

这是堆栈帧PC和功能登录PC之间的区别。 (实现特定的堆栈跟踪格式可能不是*的一个好问题) – JimB

+0

@JimB,谢谢,我已经阅读了一些wiki文章。不过,我想知道为什么SO不是一个好问题?它会导致火焰战争吗?还有其他一些XYZexchange吗? –

+1

本主题更多的是灰色地带,主要是因为实现细节可能不适用于所有常用实现,可能会更改,有时会相当快地更改,导致问题或答案过时和/或误导。并不是说go1的堆栈跟踪格式可能会改变,但是例如其他GODEBUG输出在版本之间发生了显着变化,因为它需要反映实现。 – JimB

它的堆栈帧PC和函数入口PC之间的区别。
感谢 JimB