[Nodejs]调式技术总结

简介:

欲善其功,必先利其器--Nodejs调试技术总结

调试技术与开发技术构成了软件开发的基石。目前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/');
复制代码

 

1. 基于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

 

2. 基于V8插件的调试器
Nodejs是基于google V8的引擎上构建的,Google为Eclipse提供了一个对应的调试插件。关于如何在Eclipse中安装和调试Nodejs程序就不再重复描述了, 网上已经有很多的文章了(具体可以参考这篇文章http://cnodejs.org/blog/?p=911)。唯一要注意的是在默认情况下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地址,请检查防火墙设置。

 

3. 基于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://[ip address]:8080/debug?port=5858,我们会得到如下的调试窗口:

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

 

 

原文地址:http://www.cnblogs.com/moonz-wu/archive/2012/01/15/2322120.html

目录
相关文章
|
4月前
|
JavaScript Unix Linux
Nodejs 第十二章(path)
Nodejs 第十二章(path)
28 0
|
6月前
|
前端开发
vscode编写前端提升效率的三个必不可缺的插件以及使用方法
vscode编写前端提升效率的三个必不可缺的插件以及使用方法
|
8月前
|
JSON 小程序 算法
uniapp小程序封装常用工具函数
类似的工具函数还有很多,这里暂时不一一列举了,上面提到的银行卡校验,还可以使用阿里公开的一个校验接口cardNo=银行卡号码&cardBinCheck=true这个接口会返回对应的银行简称银行卡类型,如果想要显示对应的银行logo的话,可以联系我,由于JSON数据太大,没办法全部放在这里。
126 0
|
3月前
|
Web App开发 Rust 前端开发
【一起学Rust | 框架篇 | Tauri2.0框架】Tauri App开启远程调试功能
【一起学Rust | 框架篇 | Tauri2.0框架】Tauri App开启远程调试功能
212 0
|
3月前
|
IDE 前端开发 搜索推荐
5款超好用的在线IDE,媲美vscode,可以直接编写前端构建化项目,而无需在本地下载依赖包,非常适合学习、demo、原型开发
5款超好用的在线IDE,媲美vscode,可以直接编写前端构建化项目,而无需在本地下载依赖包,非常适合学习、demo、原型开发
87 0
|
4月前
|
JavaScript 算法
Nodejs 第十九章(pngquant)
Nodejs 第十九章(pngquant)
42 0
|
10月前
|
Web App开发 JSON JavaScript
移植nodejs到嵌入式linux,让终端支持可使用js做些功能
移植nodejs到嵌入式linux,让终端支持可使用js做些功能
|
10月前
|
前端开发 Java 测试技术
软件测试|Appium的二次开发与Appium的运行原理
软件测试|Appium的二次开发与Appium的运行原理
136 0
|
安全 IDE 搜索推荐
安卓开发从源码看后端技术——搭建环境与断点调试
今天就让我们开启源码共读的篇章吧,希望这不同的眼界探索可以在这截然不同的领域会有所收获,为自身技术带来启发。
290 0
|
编译器 C语言 C++
如何利用VSCode进行C/C++的编译
神器在手,天下我有,VSCdoeyyds,来使用VSCode进行C/C++的编译
278 0
如何利用VSCode进行C/C++的编译