本文总结Node.js应用程序的三种主要调试方法:利用内建调试器、基于V8引擎的Eclipse插件以及借助node-inspector模块的Chrome浏览器调试。文章详细讲解了各方法的配置步骤、命令使用及注意事项,帮助开发者根据实际需求选择合适的调试工具。
前言
Node.js调试技术概述
调试技术与开发技术共同构成了软件开发的基石。目前,Node.js作为新兴的Web服务器开发栈,受到开发者的广泛关注。总体而言,Node.js应用程序主要由两部分组成:使用JavaScript编写的JS模块以及通过C语言编译生成的二进制模块。
本文将重点介绍三种针对JavaScript模块的调试方法:基于Node.js内建的调试器、基于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/');
基于Node.js内建调试器
一、基于Node.js内建的调试器
Node.js提供了一个内建调试器,旨在辅助开发者调试应用程序。要启用该调试器,需在代码中插入debugger标签。当Node.js执行流到达该标签时,程序会自动暂停(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插件的调试器
二、基于V8插件的调试器
Node.js构建于Google V8引擎之上,Google为Eclipse提供了相应的调试插件。关于如何在Eclipse中安装和调试Node.js程序的具体步骤,网上已有大量文章介绍,此处不再赘述。唯一需要注意的是,默认情况下V8引擎支持的调试模式为本地模式。若要开启远程调试,需修改Node.js中的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);
随后重新编译Node.js即可。
提示:
使用插件调试Node.js程序时,有时可能会遇到connect refused、get version failed等错误。请注意检查所使用的IP地址,通常127.0.0.1的回环地址是可以正常工作的。如果使用真实IP地址,请确保已正确配置防火墙设置。
基于Chrome浏览器的调试器
三、基于Chrome浏览器的调试器
既然可以通过V8调试插件进行调试,那么是否也能利用Chrome浏览器的JavaScript调试器呢?node-inspector模块提供了这种可能性。我们需要首先通过npm安装node-inspector:
npm install -g node-inspector // -g 导入安装路径到环境变量
node-inspector通过websocket方式转发调试输入输出。因此,在调试前需先启动node-inspector以监听Node.js的debug调试端口。

默认情况下,node-inspector的端口为8080,可通过参数--web-port=[port]来设置端口号。启动node-inspector后,可通过--debug或--debug-brk参数启动Node.js程序。在浏览器地址栏输入http://[ip address]:8080/debug?port=5858,即可看到如下调试窗口:

这三种方法各有优缺点,我个人更倾向于使用node-inspector的方式。
总结
以上就是本文的全部内容,希望本文的内容对大家的学习或工作能带来一定的帮助。如果有疑问,欢迎留言交流,感谢大家对本站的支持。