用Eclipse调试Node.js代码
发布于 4年前 作者 qleelulu 16158 次浏览 最后一次编辑是 3年前

node.js是基于Google V8的,而Google V8有一个Eclipse的调试插件,这个插件同样也支持node.js。

1、安装Eclipse debugger for V8


这个,用过Eclipse的应该都知道,不过还是简单说下吧:

wps_clip_image-13545

选择“Install New Software”

wps_clip_image-13957

点“Add”

wps_clip_image-14038

Location为: http://chromedevtools.googlecode.com/svn/update/dev/
Name你喜欢,整一个方便你记忆的就好。

点击确定后,在“Work with“选择你刚才添加的站点:

wps_clip_image-14557

然后选择“Chromium JavaScript Remote Debugger”,然后一直下一步,安装完后会提示重启Eclipse,重启Eclipse后就可以开始调试了。

2、怎样调试Nodejs?


从插件名称中的“Remote”可以预想到这是一个远程调试的工具,大概的流程就是node开一个tcp的调试端口,然后这个调试工具通过这个tcp端口来和node通讯实现调试。

要启用node的调试端口,在执行node脚本的时候需要添加 –-debug 参数:

node --debug[=port] NodeApp.js


or

node --debug-brk[=port] NodeApp.js


其中port为开启的调试端口,默认为5858.
–debug和–debug-brk的区别在于,–debug执行脚本的时候会直接运行该脚本,而–debug-brk执行脚本的时候,并不会马上执行,而是等待调试器的连接,然后按调试器的指令来执行。

我们写个简单的代码来用于调试:

wps_clip_image-17441

然后用 node –debug hello_world.js 来运行:

wps_clip_image-17588

可以看到输出一行:debugger listening on port 5858
5858为默认端口,你也可以用 --debug=5859 来指定不同的端口

好,现在node的调试模式已经运行起来了,我们去配置Eclipse来连接到node并进行调试。

首先我们要到debug config里面去添加一个新的V8 VM的调试配置:

wps_clip_image-18682

右键,选择“new”来新建一个配置项:

wps_clip_image-18917

因为我们刚才node起的调试端口为默认的5858,所以这里我们的端口就是5858,名称我们定为“Node-5858”。

然后点debug开始调试,或者你使用下面的方式开始调试:

wps_clip_image-20213

调试模式大概会是这样:

wps_clip_image-20478

(注:这是调试视图,点击右上角的臭虫按钮。如果你的Eclipse上没有这个按钮,请点击上图右上角臭虫左边的添加按钮,找到debug然后添加就可以)

在调试模式连接成功后,你会在你的“Project Explorer”里面看到多了一个“Node-5858”(刚才debug config里面设置的名称)的项目,里面的文件都是调试的文件或者调试的文件require进来的文件。
打开这些文件,你就可以在里面加断点开始调试了。例如上图的第8行加了一个断点,则每次在浏览器访问的时候都会进入这个断点。

wps_clip_image-21004

其他的调试和你平时用Eclipse调试其他代码是一样的。
Eclipse的调试快捷键是,F5单步进入,F6单步跳过。

最后说一下 --debug-brk 方式启动的调试模式:

wps_clip_image-22682

可以看到仅仅是输出了一行“debugger listening on port 5858”而已,后面并没有继续输出“Server running at ……”。
这是因为用 启动的调试模式并不会马上执行代码,而是会等待调试器的连接(可以理解为在hello_world.js的第一行加了断点),具体还是各位童鞋自己实践吧。

参考: https://github.com/joyent/node/wiki/Using-Eclipse-as-Node-Applications-Debugger

25 回复

嗯,这个不错,radrails稍微笨重了一点

非常的细致

[…] 前端同学一定惊呼,我x,好熟悉啊,这不是我们经常在firebug里面用的console么?是的,node使用console来输出调试,当然如果你喜欢步进调试,喜欢逆向工程中不断的下断点来调试,你可以尝试Qleelulu这样帅气的debug,虽然我认为这样非常低效。 […]

这样只完成了一半,断点只能设在node-5858工程里,还没有目录结构。修改V8 VM的Source设置里面删除默认设置,添加Javascript Source Name Mapper,在里面的Prefix of source name设置上/node_express/(假设你调试的项目是node_express,且代码从根目录开始放),就可以了。可惜的是V8 Debugging里面的Push Source Changes to VM暂时还是不能用。

请问遇到过这样得错误提示吗?
Failed to connect to V8 VM
Failed to get version
有没有办法解决?

我也是遇到这个问题
Failed to connect to V8 VM
Failed to get version

Failed to connect to V8 VM
Failed to get version [解决]

可能对方在调试的文件不是刚刚生成的文件里的hello_work.js
我的意思是说应该在“Project Explorer”里面看到多了一个“Node-5858”(刚才debug config里面设置的名称)的项目里的hello_work.js,并在这个文件里设断点。

按照步骤配置好了,可是程序中打了断点没用,就是进不去,这个问题有人碰到否?

你好请问这个问题具体是怎么解决的。我的邮箱是[email protected]

我最新版eclipse 3.7,一装上这个工具后,点调试那个按钮就死机,只能结束任务,是什么原因呢???

为何卸载了,node --debug server.js 还有效果,如何彻底删除

eclipse 3.7按步骤操作,进入到Node-5858,打开相应文件不能下断点,需要eclipse相关配置吗,求指教

[…] 首页示例页面 有道 鲜果 抓虾 Google My Yahoo! newsgator Bloglines 哪吒用Eclipse调试Node.js代码 2012年1月6日 | 分类: JavaScript | 标签: Eclipse, JavaScript, Node.js, 调试在上一篇文章中,我们介绍了用node-inspector调试Node.js代码。这里我们给出另外一种解决方案,利用Eclipse + Google Chrome Developer Tools 插件来调试Node代码。安装插件我们前面提到过,Node.js是基于V8 JavaScript Engine开发的,Google为V8开发的JavaScript调试工具 Google Chrome Developer Tools(http://code.google.com/p/chromedevtools/)同样支持Node.js代码调试。Google Chrome Developer Tools 是一个Eclipse插件,我们先在Eclipse中安装它。在Eclipse的菜单栏中打开:帮助(H)–>安装新软件(S)…,在Work with中填入地址:http://chromedevtools.googlecode.com/svn/update/dev/ ,并勾选第一个Google Chrome Developer Tools ,如图一所示:图一点击下一步,按照提示一路顺风的安装好插件,然后重启Eclipse。开始调试我们在《用node-inspector调试Node.js代码》中提到了Node的调试机制:调试时,Node会在本地监听一个TCP端口用于和调试器通信,而调试器则通过这个TCP端口来控制Node的调试运行。事实上,Node是以一种远程调试的方式来运行的,所以在调试时,我们并不需要在Eclipse中提前打开要调试的文件,而是在调试开始时,即Eclipse连接上了Node的调试端口时,Eclipse会自动获取调试的文件以及相关模块文件代码(话说我第一次时在这里卡了好久,总是想要将打开的脚本文件通过调试启动,结果失败无数次),下面我们来看看具体操作,还是以《用node-inspector调试Node.js代码》中的example.js作为例子。注意:调试时,最好将要调试的脚本放在硬盘根目录中(例如我这里example.js文件的存放路径是 D:example.js),否则调试时Eclipse会出现奇怪的错误,具体出错原因不明,也不知道是插件的Bug还是只是我的电脑的问题。在命令行下运行:node –debug example.js   如图二所示:图二然后我们打开Eclipse,切换到Eclipse的“调试视图”,具体操作如下:在菜单栏中打开:窗口(W)–>打开透视图(O)–>其他(O)… ,选择“调试”,点“确定”,如图三所示。图三为了避免不必要的干扰,我们可以将已经打开的代码窗口全部关闭。接着在菜单栏中打开:运行®–>调试配置(B)… ,在左侧找到并双击 Standalone V8 VM ,会新建一个Standalone V8 VM的调试配置,为了方便,我们可以将调试配置以“Node-端口”方式命名,比如我这里的“Node-5858”,然后修改Port为Node打开的TCP端口号。我们这里用的是i默认端口5858。如图四所示:图四设置完后点击“应用(Y)”按钮保存设置,然后再点击“调试(D) ”按钮就可以开始调试了,调试界面如图五所示。图五(点击查看大图)我们在项目资源管理器中打开Node-5858项目,找到并双击example.js,就可以查看example.js的代码,然后我们可以在双击第六行的行号给该行下断点, 程序就会很快停在这一行。剩下的包括查看变量,查看表达式等功能大同小异,就不再复述了。与node-inspector相比使用Eclipse + Google Chrome Developer Tools 调试与使用node-inspector调试,两种方案就功能上来说没有太大区别,但个人感觉在Eclipse中比在浏览器中操作要方便不少,至少各种快捷键是少不了的;需求方面,前者需要Eclipse,而后者只需要有Webkit内核的浏览器就行。所以都有各自的优缺点。另外,Eclipse安装了VJET之后,再在Eclipse中调试Node代码就会出错(我准备在后面的文章中介绍一下VJET,一个支持Node.js开发的Eclipse扩展插件,支持代码完成和提示等功能,非常不错),原因不明,尴尬。两者的取舍就看大家的了,嗯,这可不是360和QQ的选择题哦,笑。参考文章:《Using Eclipse as Node Applications Debugger》https://github.com/joyent/node/wiki/Using-Eclipse-as-Node-Applications-Debugger《用Eclipse调试Node.js代码》http://cnodejs.org/blog/?p=911 发表评论 | Trackback相关文章2011 年 12 月 14 日 – 用node-inspector调试Node.js代码2011 年 12 月 08 日 – Node.js与第三方模块和npm2011 年 12 月 04 日 – 上手Node.js2011 年 11 月 16 日 – 在Windows中使用Git2011 年 11 月 05 日 – 在Windows中使用Subversion(SVN)2011 年 07 月 01 日 – 【转】配置 Eclipse CDT + MSVC + CMake 目前还没有任何评论. […]

这个很强大啊,不过感觉有点麻烦,最好能够在node 命令行里调试

我配置好新enter image description here的V8 VM配置后,点debug开始调试,报错

怎么解决呢?

刚刚学习Nodejs,先收藏了,等有时间尝试一下 谢谢楼主

你跟我是一样的问题,我这里已经解决了。配置是没问题的,关键是自己的操作。

  1. 先在启动窗口启动,node --debug test

  2. 在eclipse里点击例子里的debug,一会就会看到eclipse里多出一个node-5858,并且可以打断点了你可以试下

调试为什么不用node-inspector,我觉得这个是最好用的了。 也不用装Eclipse。

试了一圈还是觉得 VIM + node-inspector + Chrome 的组合是最好用的开发环境了。

其实自己才是最好的调试器。我个人比较喜欢分析代码,然后用console.log() 判断自己的想法. 虽然很原始,但是对理解事情的原委有很有益处的.

哇。。终于能在eclipse下方便的调试了。。其他的ide真的用的不顺手。。

fuck终于搞清楚为啥不能设置断点了,菜单run->Breakpoint Types,选择Chrome/V8 breakpoints。遍查资料找不到,弱爆了

哥们,我发现我的菜单run->Breakpoint Types,没有选项Chrome/V8 breakpoints!!!!!!!哭死了,这什么情况

回到顶部