原文地址:http://www.noanylove.com/2011/12/node-the-inspector-debugging-node-js/

用node-inspector调试Node.js

 
2011年12月15日 | 标签: JavaScriptNode.js调试

 

重要:因为node和node-inspector更新了的缘故,现在的界面有一些不同,抽空我会更新一下。另外,下面的debug参数前应该是两个“-”,不知道为什么显示出来只有一个“-”。比较郁闷。

据说,一个程序员一辈子干得最多的事不是在写代码,而是在和Bug做斗争,所以我们也需要找个能够调试Node.js代码的工具。Node.js的JavaScript与我们常见的用于浏览器客户端的JavaScript有许多不同之处,这使得许多支持JavaScript开发的IDE或者调试器等都不支持Node.js(我会在以后的文章中介绍一些支持Node.js开发的IDE)。这里,我介绍一个官方推荐的Node.js调试工具——node-inspector。

准备工作

node-inspector通过Web网页与用户进行交互,比命令行下的调试工具要美观、操作也方便许多。首先我们需要一个基于WebKit内核的浏览器,比如Chrome, Safari,或者 Maxthon(遨游浏览器)、QQ浏览器、搜狗浏览器等(注意:后面三款浏览器只有在“极速模式”下才是WebKit内核的)。

然后我们通过npm以全局模式安装node-inspector。在命令行下运行:npm install –g node-inspector 。稍等片刻后,npm会输出一大段路径表明把node-inspector以及其依赖的模块安装在了什么地方。

PS:node-inspector使用的paperboy模块有一个bug,在过滤路径的时候没有考虑到Windows下情况,导致在Windows下运行时会返回403。不过前几天paperboy发布的新版本0.0.3终于修复了这个问题,所以现在可以正常使用了。

开始调试

调试的时候,Node.js主程序会在本地开启一个TCP调试端口,调试工具通过这个端口与Node.js通信来实现调试。我们通过node –debug[=port] App.js 或者 node –debug-brk[=port] App.js (注意,这里有显示问题,debug前面应该有两个“-”,不知道为什么显示出来只有一个了,下面代码框中的那种格式才是正确的)命令以调试模式运行脚本。–debug 和
–debug-brk参数的区别在于,前者会直接运行脚本,而后者则会暂停在脚本开头处,等待调试器连接后,由调试器的指令来决定运行。=port是可选参数,紧随在–debug或者–debug-brk之后(中间没有空格),用于指定Node开启的调试端口,如果不指定该参数,则Node.js默认会使用5858端口。App.js则是你要调试的脚本文件名。

如:

node --debug NodeApp.js
node --debug-brk=8080 MyTest.js

直接上实例,我们把下面的脚本保存为example.js,然后运行node –debug example.js 。

var util = require('util');
var count = 0;
util.debug("Starting ...");
function timer_tick() {
count = count + 1;
util.debug("Tick count: " + count);
if (count === 10) {
count += 1000;
util.debug("Set break here");
}
setTimeout(timer_tick, 1000);
}
timer_tick();

然后在命令行中运行:node-inspector ,如图一所所示。若提示warn  – error raised: Error: listen EADDRINUSE 则表明node-inspector默认使用的8080端口已经被别的程序占用了,你可以通过node-inspector –web-port=新端口号 来指定一个未被占用的端口。

图一:运行node-inspector

然后我们在浏览器中打开http://127.0.0.1:8080/debug?port=5858 (别管命令提示符中的那个http://0.0.0.0:8080/debug?port=5858 地址,那是逗你玩的)。URL中的port=5858指定了Node.js的调试端口,如果你在运行Node.js时指定了调试端口,则这里的5858要修改成指定端口。

PS:可以修改node-inspector安装目录下的config.json指定node-inspector的Web端口和调试端口。

我这里用的是Maxthon,注意要使用“极速模式”(就是地址栏右边那个小闪电的图标)。打开后调试界面如图二所示。

图二:node-inspector调试界面

界面的主体部分就是代码浏览窗口,如果没有显示代码的话,点击界面最左上方的Scripts按钮即可;若显示的代码不是example.js的内容,点击界面左上方、Profiles按钮下方的按钮(就是图三中显示“D:\example.js:0 ”的那个按钮),在弹出的下拉列表中选中example.js,如图三所示。你也可以在这里切换到其他模块文件中查看其代码。

图三:切换代码

点击代码前的代码行数字就可以给当前代码行下断点。在这个实例中,我们可以在util.debug(“Tick count: ” + count);下断点,Node就会很快停下。

界面最左边的面板提供了代码搜索,以及“暂停/继续”、“步过”、“步入”、“执行到返回”、“激活/取消断点”几个常用功能按钮,还有监控表达式等功能,如图四所示。

图四:功能版面

个人认为node-inspector的调试界面做得非常不错,简介美观,基本功能都具备了,是调试Node.js的一个不错选择。

最新文章

  1. mac 快捷键拾遗
  2. 【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构
  3. Redis学习 - 配置属性:protected-mode
  4. [No00003D]操作系统Operating Systems信号量的代码实现Coding Semaphore &死锁处理Deadlock
  5. 爱壁纸 站立会议(六)--Spring阶段总结会议
  6. 2014多校第一场J题 || HDU 4870 Rating(DP || 高斯消元)
  7. hdu 4578 Transformation 线段树
  8. jQuery 扩展 【ajax实例】
  9. Visual Basic|VB 6.0中文版
  10. ADO.NET 增删查改小总结
  11. 【转】(DT系列一)DTS结构及其编译方法----不错
  12. 让qt应用程序支持触摸
  13. 目前比较流行的Python科学计算发行版
  14. Java "==" 和 "equals" 和 "" 问题
  15. list集合怎么转化成一个javaBean对象,及常见的使用方法(全)
  16. 《MySQL必知必会》[02] 多表联合查询
  17. sql sever[基本] ''增删改'' 随笔
  18. [Solution] 985. Sum of Even Numbers After Queries
  19. 了解AutoCAD对象层次结构 —— 1 ——应用程序
  20. 回收站(recyclebin)及回滚

热门文章

  1. Jquery_类选择器笔记
  2. STM32之EXTI——外部中断
  3. Andriod如何更改应用程序小图标
  4. 【iCore3应用开发平台】发布 iCore3 应用开发平台寄存器说明
  5. VS2013菜单栏文字全大写的问题
  6. C#中图片新增水印
  7. logoff remote desktop sessions via command line tools
  8. 谈谈对Spring IOC的理解【转】
  9. argparse解析参数模块
  10. Python先合并再排序