Go語(yǔ)言 程序初始化過(guò)程

2018-07-25 17:24 更新

作為下一章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)始吧!

links


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)