Node.js源碼學習——搭建閱讀調試程式碼環境

  • 2020 年 3 月 16 日
  • 筆記

前提條件

源碼學習,是要建立在一定基礎上的,就Node.js而言,要滿足一下條件:

  • 熟悉JavaScript語言
  • 熟練Node.js服務端開發
  • 熟悉C++語言
  • 熟悉JS/C++調試

搭建步驟

如果滿足以上條件,那麼我們就開始本系列的第一章,搭建環境;

1. 下載Node.js的github項目

  • 閱讀Node.js的README.md
  • 初步弄清楚每個目錄的文件作用

2. 搭建閱讀/調試環境

  • 閱讀BUILDING.md,編譯Debug版的Node執行文件
  • 選擇JS/C++的IDE,筆者選擇CLion(C++),WebStorm(JS)
  • 配置調試參數3. 閱讀&調試

具體實施

聲明下筆者的環境,Mac(10.14.6) CLion WebStorm(其他平台Node.js文檔里也有介紹)

1. 下載Node.js源碼 git clone https://github.com/nodejs/node.git『

2. 根據BUILDING.md編譯Debug的Node執行文件

  • cd node_project
  • ./configure –debug
  • make -j4

此時Node執行文件已經構建出來,out/Debug/node

注意點:編譯Node.js源碼比較耗資源,筆者的Mac呼呼作響,且需要足夠的磁碟空間,筆者就遇到空間不足失敗的情況,建議留有20G左右的空間;

空間不足,構建失敗

Node.js編譯產物截圖:

Node.js構建產物截圖

3. 配置IDE

這裡看個人喜好,VSCode/Xcode/VS/Chrome/CLion/WebStorm都是可以用來調試了,而筆者是Jetbrains的鐵粉,所以這裡就用CLion/WebStorm來做演示,但要做到把原理說明白;

1. CLion調試C++

在*unix下,Node.js是用make來構建的,但是CLion是使用CMake來構建調試C++的,CLion可以根據程式碼目錄自動生成CMakeLists.txt,以供調試;

在CLion里,用New CMake Project from Sources導入項目,會自動生成CMakeLists.txt;

CLion自動生成的CMakeLists.txt

這裡在Edit Configurations,選擇CMake Application

  • Target選擇node_master
  • Executable選擇我們剛編出來的Debug版Node
  • Program arguments填–inspect-brk ./demo.js,–inpect-brk是在應用程式碼的第一行斷開;這裡配置對應的命令行就是node –inspect-brk /User/run/project/node_source_learn/demo.js
  • 清空Before launch里的內容,因為我們的Node已經編譯好了,不用再編譯了;
CLion調試配置

2. WebStorm調試JS(官網介紹)

在WebStorm里,新建一個目錄,新建demo.js,用來調試JS程式碼;

這裡在Edit Configurations,選擇Attach to Node.js/Chrome

  • Host填localhost
  • Port填9229,因為–inspect-brk默認監聽9229埠,將Reconnect automatically打鉤

4. 調試時,把CLion和WebStorm都啟動調試

C++斷點:

C++調試截圖

JS斷點:

JS調試截圖

此時,Node.js的C++/JS混合閱讀調試環境搭建完畢;