You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go goroutine栈跟踪中的各类数字分别代表什么含义?

Go goroutine栈跟踪数值含义说明

你给出的栈跟踪里的两类数值含义分别如下:

函数参数列表中的十六进制值(0x467a05, 0xc000000180, 0x200000003)

  • 这些是对应函数调用时的入参值,Go runtime打印栈跟踪时,会把函数的所有入参按栈上存储的顺序,以字长为单位拆分为十六进制值输出:
    • 这里三个值对应runtime/debug.Stack函数的三个入参的原始值,指针类型参数会直接打印内存地址,整型参数会打印对应的十六进制表示
    • 如果参数是接口、结构体等复合类型,会被拆分为多个十六进制值展示,比如interface类型会拆分为类型指针、数据指针两个连续的十六进制值

行号后的偏移值(+0x80 +0x18 +0x101)

  • 该值表示当前执行的指令地址,相对于对应函数入口地址的字节偏移量:
    • 以/usr/lib/golang/src/runtime/debug/stack.go:24 +0x80为例,含义是当前正在执行runtime/debug.Stack函数中,对应源代码stack.go第24行的指令,该指令的内存地址比runtime/debug.Stack函数的入口地址高0x80(十进制128)字节
    • 这个偏移量主要用于精准定位执行位置,当编译开启优化导致源代码行号和汇编指令对应关系不准确,或者单行代码对应多条汇编指令时,可以结合函数的汇编输出,直接定位到当前执行的具体指令

内容的提问来源于stack exchange,提问作者wate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:48:02