学习NodeJS第三天:打造Nodejs的调试环境(上)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangxin09/article/details/5902466

自从 NodeJS 问世以来,我们注意到的一个现象是,开源生态围绕 NodeJS 的扩展(Extends)、插件(Plugins)或工具(Tools/Utilis)在不断地增多,可见当中之蓬勃。这一方面固然很好,但这里却不是重点讨论那些扩展或者插件,而是调试工具(debugger)本身。因为,没有一个调试工具,无法展开一丁点的开发工作,或者说困难重重。大家心知肚明,调试器自必然不可或缺。官方 nodejs.org 对调试器的态度也是不含糊的。原来,官方一早在 nodejs 内置了基于Eclipse debugger plugin for V8 调试器的接口,为调试提供安排一套解决方案;另外还有一文编写针对“调试”的教程——本文恰恰是得益于出自于出自作者 Ryan Dahl 之手的这份教程提炼而来。

话说 Eclipse 是一个大平台,开源的,任何有构思的东东都可以自由地在 Eclipse 平台上施展,——好不快活,呵呵!先急不及待地看看这个调试器的界面,大概是这样的,

图一

图乃经典的 Eclipse 的风格的界面~但 Eclipse,与 nodejs 的调试,本不互为一体——待从何说起呢?Nodejs 即就是 Google V8 的高层扩展,调试过程中还是必须经过 V8 来打交道。Google V8 引擎本是一个地道的 JavaScript 解释引擎,不包含调试模块在内,也就是说需要借助另外的调试模组参与之。所以 V8/nodejs 暴露开放了相关的调试接口出来,通过这些接口整合到专门的调试模块中去,像 Eclipse Debug View,如此就可以呈现一个专业的调试环境。

本文所介绍的调试器是 Google Chrome Developer Tools,定位在面向 Chrome 开发者的工具包,而此刻我们就是借助它这个工具来调试 nodejs 的。Google Chrome Developer Tools 在原理上是基于 TCP 远程的调试环境的这么一个 Eclipse 插件。作者 Ryan Dahl 有考虑到,直接在 V8  C++ / Eclipse Java 的最终环境中加入调试器而非远程调试的,——但是为什么不这样做?原因是什么?作者的说法是为了避免插件在 C++/Java 两者运行时带来的不稳定性。

好,休费多唇舌,咱们从基础部分进入调试 nodejs 的介绍。首先是安装 Google Chrome Developer Tools。假设用户已经了解Eclipse的基本使用(熟悉怎么安装 Eclipse 插件的用户则可以跳过此步……),进入菜单选择【Help】--【Software Updates...】,如下图。

出现对话框后切换至【Available Software】标签页,如下图。

然后点击右方的【Add Site……】按钮,有否出现一个输入 url 网址的对话框?这是 Google Chrome Developer Tools的下载地址了,我们贴上:

http://chromedevtools.googlecode.com/svn/update/dev/

然后确认 OK,稍等待片刻,如果出现 http://chromedevtools.googlecode.com/svn/update/dev/ 的树菜单,在其前面打勾选择下载。接着点击右边的【install……】。

稍等片刻计算依赖关系……

在【Review Licenses】的窗体中确认许可,然后点击【Next】,正式开始安装:

安装进度100%之后重启 Eclipse IDE 好让插件生效。然后在菜单【Windows】--【Show View】--选择【Debug】切换到 Eclipse 的调试视图,即图一的界面(还没链接Nodejs),如下图。到这一步,调试插件被安装完成,接着是设置调试器的部分。

如上图红色区域,点击【Debug】的图标旁边的倒三角,出现下拉菜单点击【Debug Configurations …】。然后从左边的选择项之中点击【Standalone V8 VM(独立 V8 虚拟机)】接着右键鼠标,选择【New】新建一个调试profile。

如下图,输入名称【name】和端口【Port】。可以设置端口为 Node-5858、Node-5859、Node-5860……等等,但必须与 nodejs 脚本中所指定的端口一致。

最后点击【Debug】按钮旋即计入调试界面(如图一)。至此,我们安装调试插件和设置端口部分已经完成了。打算了解如何在 JavaScript 源代码中进一步的调试吗?例如打点、步进、监视等的调试基本操作内容……在下一篇中将为大家作介绍!

展开阅读全文

没有更多推荐了,返回首页