Go語言 程序初始化過程

2018-07-25 17:24 更新

作為下一章goroutine調(diào)度的一個前序,本章先講一些基礎(chǔ)內(nèi)容,看一看Go語言編寫的程序的初始化過程。其實初始化過程中會做很多很多的事情,這里忽略大部分細(xì)節(jié),只看一下脈絡(luò)。從程序入口開始分析也是學(xué)習(xí)源代碼的一個好方式。

首先,寫一個hello world文件,內(nèi)容如下:

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

編譯,使用gdb調(diào)試。給下列函數(shù)下斷點:

_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中先點r,回車,然后點c,回車,接著一路回車。

別著急,只是讓你有一個直觀的感受一下Go程序從系統(tǒng)初始化直到退出必經(jīng)的流程。下面讓我們正式開始吧!

links


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號