GDB工具分析golang源码

本文介绍了使用GDB工具分析Golang源码的过程,重点涉及汇编引导、初始化和内存分配。在runtime.main()中,初始化栈限制、垃圾回收,并执行所有初始化init和main.main函数。通过设置断点,详细展示了命令行参数整理、CPU核心数检测、调度器初始化等步骤,以及Golang内存分配的策略,包括预分配、内存池和垃圾回收的配合。
摘要由CSDN通过智能技术生成

整体引导顺序:

line 8

根据:asm_amd64.s文件的内容,以下go文件被顺序调用:先call一些初始化,最后调用runtime的main。

在runtime.main() 中:执行栈最大限制,启动垃圾回收,执行runtime包内所有初始化init,启动垃圾回收后台操作,执行所有的用户包,包括标准库,的初始化init,执行用户逻辑入口main.main函数。执行结束,返回退出状态码。

//go:linkname runtime_init runtime.init  表示由编译器动态生成

func runtime_init()

编译器动态生成的方法还有:func main_init()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值