Golang堆栈跟踪详细信息

huangapple go评论103阅读模式
英文:

Golang stack trace details

问题

我希望有人能解释一下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的空指针引起的。

英文:

I was hoping someone could explain to me one small detail of Golang's stack trace, that was mostly disregarded by tutorials I've read.
Example of a stack trace I got:

<pre>

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
...
...
...

</pre>

So I'm really curious about what is the meaning of +0x12a, +0x243, +0x38 after the number of a line in code where error occurred.

Thanks,
R.C.

P.S.: the panic was caused by a null pointer to func GetJson(*http.Response, interface{}) error

答案1

得分: 3

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

英文:

<blockquote>It's the difference between the stack frame PC and the function entry PC.</blockquote> thanks to JimB

huangapple
  • 本文由 发表于 2017年3月17日 19:37:39
  • 转载请务必保留本文链接:https://go.coder-hub.com/42856534.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定