http://blog.csdn.net/zhangxin09/article/details/5902466
自从NODEJS问世以来,我们注意到的一个现象是,开源生态围绕Nodejs的扩展(Extends)、插件(Plugins)或工具 (Tools/Utilis)在不断地增多,可见当中之蓬勃。这一方面固然很好,但这里却不是重点讨论那些扩展或者插件,而是调试工具(debugger)本身。因为,没有一个调试工具,无法展开一丁点的开发工作,或者困难重重。大家心知肚明,调试器自必然不可或缺。官方 nodejs.org对调试器的态度也是不含糊的。原来,官方一早在nodejs内置基于Eclipse debugger plugin for V8 调试器的接口,为调试提供安排一套解决方案;另外还有一文编写针对“调试”的教程——本文恰恰是得益于出自于出自ry之手的这份教程 提炼而来。
话说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插件。作者ry有考虑到,直接在C++/Java的最终环境中加入调试器而不远程调试的,——为什么不这样做?原因是什么?作者的说法是为了避免插件在C++/Java运行时带来的不稳定性。
好,休费多唇舌,咱们从基础部分进入调试nodejs的介绍。首先是安装Google Chrome Developer Tools。假设用户已经了解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】按钮旋即计入调试界面(如图一)。至此,我们安装调试插件和设置端口部分已经完成了。打算了解如何在js代码中进一步的调试吗?例如打点、步进、监视等的调试基本操作内容……在下一篇中将为大家作介绍!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述