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编译产物截图:

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;

这里在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已经编译好了,不用再编译了;

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++断点:

JS断点:

此时,Node.js的C++/JS混合阅读调试环境搭建完毕;