【发布时间】:2017-12-05 19:05:24
【问题描述】:
在尝试学习如何从恐慌中调试堆栈跟踪时,我遇到了一些令人困惑的事情。
package main
func F(a int) {
panic(nil)
}
func main() {
F(1)
}
当我在附加的播放链接上运行它时输出以下内容:
panic: nil
goroutine 1 [running]:
main.F(0x1, 0x10436000)
/tmp/sandbox090887108/main.go:4 +0x20
main.main()
/tmp/sandbox090887108/main.go:8 +0x20
我无法解读第二个数字的含义(main.F(0x1, 0x10436000) 中的 0x10436000)。如果有第二个 int 参数,或者作为第一个参数传入的任何其他参数(可以在第二个播放链接中看到),它就不会出现。
【问题讨论】:
-
数字
0x10436000似乎也出现在其他堆栈跟踪中。我不确定它的意义是什么? github.com/golang/go/issues/20763 -
这真的很有趣。我得到了不同的输出
main.F(0x1)(见gist.github.com/hectorcorrea/5fd563f1dabb88bd0f351c0fc2bae5ee)。请注意,我在 Mac 上使用 go 1.7.1。 -
我在 OSX 上使用 Go 1.9 得到的结果与 @HectorCorrea 相同。你的 Go 版本和环境是什么?
-
@Kaedys 我在 OSX 上使用 1.9.2,但我在本地看不到它。 Golang play 使用 1.9 版本,但我愿意假设它不使用 OSX。
-
另外我推荐这篇文章来了解堆栈跟踪的解释:Ardan Labs: Stack Traces In Go。并了解有关 Go Playground 实施的更多信息:The Go Blog: Inside the Go Playground
标签: go