当前位置: 移动技术网 > IT编程>开发语言>JavaScript > Node.js调试技术总结分享

Node.js调试技术总结分享

2019年06月11日  | 移动技术网IT编程  | 我要评论
前言 众所周知调试技术与开发技术构成了软件开发的基石。目前nodejs作为新型的web server开发栈倍受开发者关注。总的来说nodejs的应用程序主要有两部分:ja

前言

众所周知调试技术与开发技术构成了软件开发的基石。目前nodejs作为新型的web server开发栈倍受开发者关注。总的来说nodejs的应用程序主要有两部分:javascript编写的js模块和c语言编译的二进制模块。

这里主要介绍三种avascript模块的调试方法:基于nodejs内建的调试器,基于v8调试插件和基于chrome浏览器的调试器。

以下所有的操作都将基于如下代码(example.js):

var http = require('http');
var url = require('url');
http.createserver(function (req, res) {
 var path = url.parse(req.url).pathname;
 res.writehead(200, {'content-type': 'text/plain'});
 res.end(path);
}).listen(1337, "127.0.0.1");
console.log('server running at http://127.0.0.1:1337/');

一. 基于nodejs内建的调试器

nodejs提供了一个内建调试器来帮助开发者调试应用程序。想要开启调试器我们需要在代码中加入debugger标签,当nodejs执行到debugger标签时会自动暂停(debugger标签相当于在代码中开启一个断点)。代码如下:

var path = url.parse(req.url).pathname;
debugger;
res.writehead(200, {'content-type': 'text/plain'});

执行命令:node debug example.js 就可以进入调试模式。

在debug模式下,可以使用内建命令如repl去评估变量和表达式的值(如2所示)。我们也可以通过help命令来获取完整的调试命令列表。

commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setbreakpoint (sb), clearbreakpoint (cb),
watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version

二. 基于v8插件的调试器

nodejs是基于google v8的引擎上构建的,google为eclipse提供了一个对应的调试插件。关于如何在eclipse中安装和调试nodejs程序就不再重复描述了,网上已经有很多的文章了,唯一要注意的是在默认情况下v8引擎支持的调试模式是本地模式。如果想要开启远程调试的话,我们需要修改nodejs中的v8源文件: /deps/v8/src/platform-posix.cc

 addr.sin_family = af_inet;
 addr.sin_addr.s_addr = htonl(inaddr_loopback); --> inaddr_any
 addr.sin_port = htons(port);

然后重新编译nodejs。

提示:

用插件来调试nodejs程序,你有时候会遇到什么connect refuse, get version failed等等错误。那么请注意你使用的ip的地址, 一般下127.0.0.1的回环地址是都工作的。如果你使用真实的ip地址,请检查防火墙设置。

三. 基于chrome浏览器的调试器

既然我们可以通过v8的调试插件来调试,那是否也可以借用chrome浏览器的javascript调试器来调试呢?node-inspector模块提供了这样一种可能。我们需要先通过npm来安装node-inspector

npm install -g node-inspector // -g 导入安装路径到环境变量

node-inspector是通过websocket方式来转向debug输入输出的。因此,我们在调试前要先启动node-inspector来监听nodejs的debug调试端口。

默认情况下node-inspector的端口是8080,可以通过参数--web-port=[port]来设置端口。在启动node-inpspector之后,我们可以通过--debug或--debug-brk来启动nodejs程序。通过在浏览器输入http://www.lhsxpumps.com/_[ip address]:8080/debug?port=5858,我们会得到如下的调试窗口:

这三种方法各自有优缺点,我个人比较欣赏node-inspector的方式。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网