目前,Node在前端的开发中已经运用的十分广泛了,它主要用于开发Node服务和Node工具,无论哪一种在开发的时候都离不开调试!最原始的调试办法是加console.log,然后在控制台查看打印的信息,这种方式调试很慢而且很难兼顾上下文,所以我们能不能像调试页面一样在浏览器中调试Node业务代码甚至Node源码呢?下面我分享几个常用的便捷方法。
第一种方式
建一个业务代码文件demo.js,运行以下命令:
//9229是调试端口
node --inspect-brk=9229 demo.js
现在我们用chrome打开chrome://inspect这个地址
图1
在图1红色区域中点击inspect,就会弹出一个debug工具,
图2
这个界面和平时我们调试web的devtools几乎一毛一样,现在我们就能按照平时调试web的习惯去调试Node了。
第二种方式
全局安装一个npm模块ndb
npm install ndb -g
然后用ndb命令去运行业务代码文件
ndb demo.js
//或者
ndb node demo.js
之后会弹出一个界面
图3
和第一种方式一样,直接就可以在这个界面debug。
第三种方式
利用vscode调试node代码
如果你没有在用vscode,那就安装一个吧,毕竟是当下最流行的开发工具。
装完之后,加入你的工程代码
图4
首先点击图4中的1号图案(像个乌龟),再点击图2设置按钮,会弹出一个配置文件,如下:
图5
在配置文件中,加入图5中红色区域的配置,保存。
图6
回到自己的业务代码,如图6,加一个断点,
图7
如图7,运行一下红色区域的命令(和第一种方式一样),然后点击debug按钮,这样就可以在编辑器上debug了。
图8
如果编辑器上debug的快捷键和chrome不一致,可以自己改一下,保持一致用着会比较顺手。
调试Node中js源码部分
Node主要是用js和c++开发的,底层是c++,开发了一些能力,上面的js是调用这些能力封装了一些逻辑,我更关注js部分的逻辑,那如何debug Node的源码呢?
首先从github上下载node源码,下载完成后,进入node源码的工程下,创建一个文件build.sh,加入下面的内容:
#!/bin/bash
./configure --debug
make -C out BUILDTYPE=Debug -j 4
以上完成过后,运行一下这个脚本
sh build.sh
第一次运行时间比较长,大家可以出去逛个超市跑个步什么的!
运行完成后,会生成一个out目录,在out/Debug/下会生成一个debug版本的node可执行程序,用此node代替全局命令里面的node,并采用以上三种方式就可以debug进node源码中了!
图9
图10
运行图9中的命令,在业务代码中就可以debug进node源码中,如图10(stream模块源码)。
总结
这篇文章介绍了三种调试方式,其实还有一些其他的方式没说,不过已经够用了!第一种方式最常见,但是我比较喜欢第二种方式,它会自动打开debug工具,非常方便,不过非常占电脑内存!大家有什么更好的调试方法可以在评论区发表建议!
喜欢我的文章就关注我吧,有问题可以发表评论,我们一起学习,共同成长!
领取专属 10元无门槛券
私享最新 技术干货