英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论