目录
当前位置: 首页 > 文档资料 > 深入解析 Go >

4 Go语言程序初始化过程

优质
小牛编辑
131浏览
2023-12-01

作为下一章goroutine调度的一个前序,本章先讲一些基础内容,看一看Go语言编写的程序的初始化过程。其实初始化过程中会做很多很多的事情,这里忽略大部分细节,只看一下脉络。从程序入口开始分析也是学习源代码的一个好方式。

首先,写一个hello world文件,内容如下:

	package main
	import "fmt"
	func main() {
	     fmt.Println("hello world!")
	}

编译,使用gdb调试。给下列函数下断点:

_rt0_amd64_darwin
main
_rt0_amd64
runtime.check
runtime.args
runtime.osinit
runtime.hashinit
runtime.schedinit
runtime.newproc
runtime.mstart
main.main
runtime.exit

你可能需要根据自己的系统将_rt0_amd64_darwin改成_rt0_amd64_linux或者别的。在gdb中先点r,回车,然后点c,回车,接着一路回车。

别着急,只是让你有一个直观的感受一下Go程序从系统初始化直到退出必经的流程。下面让我们正式开始吧!

links

  • 目录
  • 上一节: 闭包的实现
  • 下一节: 系统初始化