作為下一章goroutine調(diào)度的一個(gè)前序,本章先講一些基礎(chǔ)內(nèi)容,看一看Go語(yǔ)言編寫的程序的初始化過(guò)程。其實(shí)初始化過(guò)程中會(huì)做很多很多的事情,這里忽略大部分細(xì)節(jié),只看一下脈絡(luò)。從程序入口開(kāi)始分析也是學(xué)習(xí)源代碼的一個(gè)好方式。
首先,寫一個(gè)hello world文件,內(nèi)容如下:
package main
import "fmt"
func main() {
fmt.Println("hello world!")
}
編譯,使用gdb調(diào)試。給下列函數(shù)下斷點(diǎn):
_rt0_amd64_darwin
main
_rt0_amd64
runtime.check
runtime.args
runtime.osinit
runtime.hashinit
runtime.schedinit
runtime.newproc
runtime.mstart
main.main
runtime.exit
你可能需要根據(jù)自己的系統(tǒng)將_rt0_amd64_darwin改成_rt0_amd64_linux或者別的。在gdb中先點(diǎn)r,回車,然后點(diǎn)c,回車,接著一路回車。
別著急,只是讓你有一個(gè)直觀的感受一下Go程序從系統(tǒng)初始化直到退出必經(jīng)的流程。下面讓我們正式開(kāi)始吧!
更多建議: