我爱编程让前端飞

Node.js源码学习(1) 使用cLion调试node.js源

2018-01-15  本文已影响0人  hihl

原文地址:http://hiihl.com/articles/2018/1/15/learnnode1.md
本人近期在学习Node.js源码,并将会把学习过程、心得形成笔记。

环境准备

本地编译

node.js是用C++写的,所以编译有以下步骤:

首先是配置

进入到node目录后,执行./configure --debug,注意后面的--debug,一开始我没有加的试后发现断点进不去;
执行完以后会生成以下文件:

|____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编译时需要的一些参数配置

之后执行make编译,在这之前,我看到了Makefile中有这样一段注释(搜debug看到的)

# 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啦。

第三步make install是安装时需要,此处可以忽略。

导入工程

打开IDE cLion,并导入本地的node项目,打开Run/Debug配置调试信息


2018-1-15-learnnode1.jpg

参照上图配置:

ok,然后找到node_main.cc,在main方法中打断点,debug运行

2018-1-15-learnnode2.jpg

如图所示,我们成功进入了断点。

同时调试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

上一篇 下一篇

猜你喜欢

热点阅读