go stack trace 学习笔记

本文介绍了如何理解和解析Go语言中panic产生的堆栈信息。通过分析gostack打印的细节,如不同数据类型在堆栈中的表示方式,帮助开发者更有效地定位和解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今年学习了一下 go stack,就是怎么看go panic 之后打印的堆栈信息

学习的网址:https://www.ardanlabs.com/blog/2015/01/stack-traces-in-go.html

归纳总结几点我觉得有用的:

1. go stack 打印的函数参数地址和真正的函数声明的参数不是一一对应的

2. 对于int, 或者bool这些,只用一个字节

3. 对于string, 两个字节,第一个字节是string的指针地址,第二个字节是string的长度

4.对于切片,用三个字节,第一个字节是指针地址,第二个是长度,第三个是容量

5. 对于函数有接受者的,比如 func(s * Struct) method() 这种的,第一个是指针地址,就是s的地址

6. 有时候会package(打包),就是比如参数是 三个bool 和一个uint,他们都占8bit,会打包成32bit的字节,就是四个参数用一个字节表示

 

感觉学习了这个之后,再去分析panic的原因会有一点帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值