goroutine 1 [running]:
runtime/debug.Stack(0x467a05, 0xc000000180, 0x200000003)
/usr/lib/golang/src/runtime/debug/stack.go:24 +0x80
runtime/debug.PrintStack()
/usr/lib/golang/src/runtime/debug/stack.go:16 +0x18
main.test3()
/tmp/test_stacktrace.go:18 +0x101
Run Code Online (Sandbox Code Playgroud)
您如何理解以下这些词?
0x467a05, 0xc000000180, 0x200000003 +0x80 +0x18 +0x101
这些是传递给各种函数的各种参数的原始(计算机指令级)值。嗯,也就是说,括号中的那些 -+0x101是机器代码中的程序计数器偏移量。
要理解它们,您必须查看原始计算机代码,或使用调试器。调试器使用编译器留下的跟踪信息将“计算机寄存器%rax保持0x467a05”(或其他)转换为“变量 x 保持值......”(对于某些值,例如可能是字符串)。
如果您不确定它们代表什么,请只关注堆栈跟踪中的名称和行号。你在功能main.test318行,当你调用的函数PrintStack在运行时代码。