說到 Go 語言,你會想到什麼呢?
簡潔?美麗?強大?無所不在?從筆者的角度來看,這些都是 Go 語言的一些形容詞而已。
「存在先於本質」,可是,Go 語言到底是什麼?這個問題可能又不免太大了。
秉持著鐵人賽的精神,我們就從 Hello World 開始吧!在接下來的 30 天當中,筆者將使用靜態的 vim-go 與動態的 gdb 追蹤工具觀察 Go 語言程式,目標是理解重要標準函式庫的實作並妥善的解說給讀者;如果能夠來得及的話,也希望能夠涵蓋到其他面向,比方說 Go compiler 之類的。
讓我們一起努力吧!
前情提要 昨日我們終於確定取得一個新的 G 物件,並且初次見識到 G 的狀態轉移。 快轉一點點 由於接下來的部份有些雜亂,筆者還是跳過了一些部份,大致交待如下...
前情提要 昨日看到 gostartcallfn 函式眼睛一亮,但終究只是設定一些 context,runtime 還未結束,仍需繼續 trace。 接下去呢?...
前情提要 之前取得的 newg 狀態已經調整為可執行,而且也已經分配好 ID 了。 newproc1 的尾巴 if raceenabled {...
前情提要 走到 newproc1 函式的結尾。新的 goroutine 已經如子彈一般上膛了。 一路返回 newproc1 回傳之後會一路回到最初的 rt0_...
前情提要 昨日進入到 mstart 函式之中,可算是整個 bootstrap 的最後階段。在裡面走到 mstart1,也透過 gdb 觀察得知就是在這裡面執行...
前情提要 昨日進入 minit 之後再進到 minitSignals,看完了針對 signal 使用的堆疊如何設置。 開始 minitSignalMask f...
前情提要 昨日加前日,將 signal 相關的機制瀏覽完,然後準備進入 schedule。 加入排程 終於來到這個無法折返點了。schedule 函式也還是一...
前情提要 昨日終於進入了 runtime.main,並將全域的 mainStarted 設置為真,昭告天下執行期環境已經快要完備了。 重返 systemsta...
前情提要 昨日一路單槍匹馬的執行流程 fork 出了一個 sysmon 執行緒在另外一個 M 上,正式成為多線程並行程式了。 多線程除錯的現實 我們現在有兩隻...