原文地址: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的一个不错选择。

用node-inspector调试Node.js(转自NOANYLOVE'S BLOG)的更多相关文章

  1. 快捷使用Node Inspector调试NodeJS

    一:介绍 NodeJS开发有很多种调试方式,比如输出Log.WebStorm自带的调试器.Node Inspector等,其中Node Inspector是比较流行和被推荐的一种. 但是Node In ...

  2. nodejs 使用Google浏览器进行可视化调试——Node Inspector工具

    1.npm安装Node Inspector工具,全局安装 命令行执行npm install -g node-inspector 2.启动Node Inspector工具,命令行执行 node-insp ...

  3. 【译】在 Chrome 开发者工具中调试 node.js

    原文链接 : Debugging Node.js in Chrome DevTools 原文作者 : MATT DESLAURIERS 译文出自 : 掘金翻译计划 译文链接 : https://git ...

  4. 使用 node-inspector 调试 Node.js

    大部分基于 Node.js 的应用都是执行在浏览器中的, 比如强大的调试工具 node-inspector. node-inspector 是一个全然基于 Node.js 的开源在线调试工具,提供了强 ...

  5. 在 Chrome 开发者工具中调试 node.js

    命令行工具 devtool ,它可以在 Chrome 的开发者工具中运行 Node.js 程序. 下面的记录显示了在一个 HTTP 服务器中设置断点的情况. 该工具基于 Electron 将 Node ...

  6. 使用sublime调试node.js

    安装node相关 从node官网下载node的安装文件,我下的版本是node-v0.10.22-x64.exe,安装完node,node相关工具应该都加都环境变量path中了. 命令行下安装node- ...

  7. 调试 node.js 程序

    调试 node.js 程序 在程序开发中,如何快速的查找定位问题是一项非常重要的基本功.在实际开发过程中,或多或少都会遇到程序出现问题导致无法正常运行的情况,因此,调试代码就变成了一项无法避免的工作. ...

  8. vscode 调试node.js

    在开发的过程中,几乎不可能一次性就能写出毫无破绽的程序,断点调试代码是一个普遍的需求. 作为前端开发工程师,以往我们开发的JavaScript程序都运行在浏览器端,利用Chrome提供的开发者工具就可 ...

  9. Node.js实战(四)之调试Node.js

    当项目逐渐扩大以后,功能越来越多,这时有的时候需要增加或者修改,同时优化某些功能,就有可能出问题了.针对于线上Linux环境我们应该如何调试项目呢? 别怕,Node.js已经为我们考虑到了. 通过 n ...

随机推荐

  1. this用法(ryf)

    this是javascript语言的一个关键字 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,比如: function test(){ this.x = 1; } 随着函数使用场合的不 ...

  2. [LintCode] Single Number 单独的数字

    Given 2*n + 1 numbers, every numbers occurs twice except one, find it. Have you met this question in ...

  3. 【emWin】例程九:绘制流位图

    实验指导书及代码包下载: 链接:http://pan.baidu.com/s/1kVDIWIF 密码:9jbo 实验现象:

  4. PHPExcel中文开发手册翻译版(1)

    请注意这个是粗翻译版,仅供参考,不是精校版 精校版后面才会更新 英文原版在线文档 https://github.com/PHPOffice/PHPExcel/wiki/User%20Documenta ...

  5. 本地测试SMTP服务器

    一年前看计算机网络里的电子邮件协议的时候,想自己建一个本地SMTP服务器,然后用telnet发送消息,后来是没找到.这次又翻看了一下,找了个Windows平台下的hMailServer,挺方便的.步骤 ...

  6. elasticsearch之节点重启

    Elasticsearch节点重启时背后发生的故事有哪些,应该注意哪些配置内容,本篇文章做一个简单的探讨. 节点离开 在elasticsearch集群中,假设NodeA因为种种原因退出集群,在Node ...

  7. 前端Javascript书籍分享

    早前在公司曾做过一些关于前端的技术分享,而每每跟大家谈到深处时,大家会疑惑这些知识点从何而来. 我会经常在内部去推荐自己读过的好书,希望大家在技术层面上都能更上一个台阶. 今天写下这个帖子一方面是记录 ...

  8. ajax+表单验证+验证码生成例子

    MainController.class.php <?php namespace AjaxYz\Controller; use Think\Controller; class MainContr ...

  9. python thrift 服务端与客户端使用

    一.简介 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, ...

  10. 利用nodeJS实现的网络小爬虫

    var http=require("http");var cheerio=require('cheerio');var url="http://www.imooc.com ...