登录
首页 >  Golang >  Go问答

这些数字在堆栈跟踪中表示什么?

来源:stackoverflow

时间:2024-03-01 20:06:22 156浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《这些数字在堆栈跟踪中表示什么?》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

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

下面这句话你怎么理解?

0x467a05、0xc000000180、0x200000003 +0x80 +0x18 +0x101


正确答案


这些是传递给各种函数的各种参数的原始(计算机指令级)值。嗯,就是括号里的——+0x101 是机器码中的程序计数器偏移量。

要理解它们,您必须查看原始计算机代码,或使用调试器。调试器使用编译器留下的跟踪信息将“计算机寄存器 %rax 保存 0x467a05”(或其他内容)转换为“变量 x 保存值...”(对于某些值,例如可能是字符串)。

如果您不确定它们代表什么,请仅关注堆栈跟踪中的名称和行号。当您在运行时代码中调用函数 PrintStack 时,您位于函数 main.test3 的第 18 行。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>