作为下一章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程序从系统初始化直到退出必经的流程。下面让我们正式开始吧!
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8