原文地址:hiihl.com/articles/20… 本人近期在學習Node.js源碼,並將會把學習過程、心得造成筆記。node
node.js是用C++寫的,因此編譯有如下步驟:webpack
首先是配置git
進入到node目錄後,執行./configure --debug
,注意後面的--debug,一開始我沒有加的試後發現斷點進不去; 執行完之後會生成如下文件:github
|____cctest.target.mk
|____gyp-mac-tool
|____Makefile
|____mkssldef.target.mk
|____node.target.mk
|____node_dtrace_header.target.mk
|____node_dtrace_provider.target.mk
|____node_dtrace_ustack.target.mk
|____node_etw.target.mk
|____node_js2c.host.mk
|____node_perfctr.target.mk
|____specialize_node_d.target.mk
|____v8_inspector_compress_protocol_json.host.mk
複製代碼
這些文件應該是make編譯時須要的一些參數配置web
以後執行make編譯,在這以前,我看到了Makefile中有這樣一段註釋(搜debug看到的)json
# BUILDTYPE=Debug builds both release and debug builds. If you want to compile
# just the debug build, run `make -C out BUILDTYPE=Debug` instead.
複製代碼
從這段註釋理解,若是咱們運行make -C out BUILDTYPE=Debug
則不會編譯release代碼,因爲咱們是本地學習使用,因此我使用 make -C out BUILDTYPE=Debug -j 4
編譯,其中-j時編譯使用的進程數,用於加快編譯。 編譯過程時間比較久,編譯完之後能夠看到多了一個out目錄,out/Debug目錄下有個可執行的文件node,這就是咱們本地編譯出來的node啦。bash
第三步make install是安裝時須要,此處能夠忽略。ide
打開IDE cLion,並導入本地的node項目,打開Run/Debug配置調試信息學習
參照上圖配置:ui
ok,而後找到node_main.cc
,在main方法中打斷點,debug運行
如圖所示,咱們成功進入了斷點。
若是,咱們想要同時調試js代碼及node.js源碼,該如何配置呢? 回想咱們使用webpack debug代碼時控制檯上會打印node --inspect-brk=49469 /xxx.js
,node版本<8時打印--debug --debug-brk=49469
, 其中這49469就是node.js的調試窗口,因此咱們在調試node.js源碼時,Program arguments能夠這樣配置--inspect-brk=49469 ./test.js
, 而後再啓動一個Node.js Remote Debug (webStorm中)或 Attach to Node.js/Chrome (cLion中)
,端口號配置爲49469,便可同時調試js