Node.js源碼學習(1) 使用cLion調試node.js源碼

原文地址:hiihl.com/articles/20… 本人近期在學習Node.js源碼,並將會把學習過程、心得造成筆記。node

環境準備

  • 操做系統: macOS
  • IDE: cLion
  • 源碼路徑: Node Master

本地編譯

node.js是用C++寫的,因此編譯有如下步驟:webpack

  • ./configure 配置。軟件裝到哪裏、什麼參數、什麼os、裝什麼東西,全都是configure來肯定的
  • make 編譯。make會讀取makefile的配置,進行編譯,生成可執行文件
  • make install 安裝。make install 會根據設定好的路徑,把軟件安裝到系統中

首先是配置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

  • 選擇Executable爲前面編譯出來的out/Debug/node;
  • Before launch中有一個build,咱們要把它刪掉,不然每次都會從新編譯;
  • Work directory選擇要運行的js代碼目錄;
  • Program arguments即爲要運行的js代碼。

ok,而後找到node_main.cc,在main方法中打斷點,debug運行

如圖所示,咱們成功進入了斷點。

同時調試js及node源碼

若是,咱們想要同時調試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

相關文章
相關標籤/搜索