用Eclipse調(diào)試Node.js代碼
node.js是基于Google V8的,而Google V8有一個(gè)Eclipse的調(diào)試插件,這個(gè)插件同樣也支持node.js。
1、安裝Eclipse debugger for V8
這個(gè),用過(guò)Eclipse的應(yīng)該都知道,不過(guò)還是簡(jiǎn)單說(shuō)下吧:

選擇“Install New Software”

點(diǎn)“Add”

Location為: http://chromedevtools.googlecode.com/svn/update/dev/
Name你喜歡,整一個(gè)方便你記憶的就好。
點(diǎn)擊確定后,在“Work with“選擇你剛才添加的站點(diǎn):

然后選擇“Chromium JavaScript Remote Debugger”,然后一直下一步,安裝完后會(huì)提示重啟Eclipse,重啟Eclipse后就可以開(kāi)始調(diào)試了。
2、怎樣調(diào)試Nodejs?
從插件名稱(chēng)中的“Remote”可以預(yù)想到這是一個(gè)遠(yuǎn)程調(diào)試的工具,大概的流程就是node開(kāi)一個(gè)tcp的調(diào)試端口,然后這個(gè)調(diào)試工具通過(guò)這個(gè)tcp端口來(lái)和node通訊實(shí)現(xiàn)調(diào)試。
要啟用node的調(diào)試端口,在執(zhí)行node腳本的時(shí)候需要添加 –-debug 參數(shù):
- node --debug[=port] NodeApp.js
- or
- node --debug-brk[=port] NodeApp.js
其中port為開(kāi)啟的調(diào)試端口,默認(rèn)為5858.
--debug和--debug-brk的區(qū)別在于,--debug執(zhí)行腳本的時(shí)候會(huì)直接運(yùn)行該腳本,而--debug-brk執(zhí)行腳本的時(shí)候,并不會(huì)馬上執(zhí)行,而是等待調(diào)試器的連接,然后按調(diào)試器的指令來(lái)執(zhí)行。
我們寫(xiě)個(gè)簡(jiǎn)單的代碼來(lái)用于調(diào)試:

然后用 node –debug hello_world.js 來(lái)運(yùn)行:

可以看到輸出一行:debugger listening on port 5858
5858為默認(rèn)端口,你也可以用 --debug=5859 來(lái)指定不同的端口
好,現(xiàn)在node的調(diào)試模式已經(jīng)運(yùn)行起來(lái)了,我們?nèi)ヅ渲肊clipse來(lái)連接到node并進(jìn)行調(diào)試。
首先我們要到debug config里面去添加一個(gè)新的V8 VM的調(diào)試配置:

右鍵,選擇“new”來(lái)新建一個(gè)配置項(xiàng):

因?yàn)槲覀儎偛舗ode起的調(diào)試端口為默認(rèn)的5858,所以這里我們的端口就是5858,名稱(chēng)我們定為“Node-5858”。
然后點(diǎn)debug開(kāi)始調(diào)試,或者你使用下面的方式開(kāi)始調(diào)試:
調(diào)試模式大概會(huì)是這樣:

(注:這是調(diào)試視圖,點(diǎn)擊右上角的臭蟲(chóng)按鈕。如果你的Eclipse上沒(méi)有這個(gè)按鈕,請(qǐng)點(diǎn)擊上圖右上角臭蟲(chóng)左邊的添加按鈕,找到debug然后添加就可以)
在調(diào)試模式連接成功后,你會(huì)在你的“Project Explorer”里面看到多了一個(gè)“Node-5858”(剛才debug config里面設(shè)置的名稱(chēng))的項(xiàng)目,里面的文件都是調(diào)試的文件或者調(diào)試的文件require進(jìn)來(lái)的文件。
打開(kāi)這些文件,你就可以在里面加斷點(diǎn)開(kāi)始調(diào)試了。例如上圖的第8行加了一個(gè)斷點(diǎn),則每次在瀏覽器訪(fǎng)問(wèn)的時(shí)候都會(huì)進(jìn)入這個(gè)斷點(diǎn)。

其他的調(diào)試和你平時(shí)用Eclipse調(diào)試其他代碼是一樣的。
Eclipse的調(diào)試快捷鍵是,F(xiàn)5單步進(jìn)入,F(xiàn)6單步跳過(guò)。
最后說(shuō)一下 --debug-brk 方式啟動(dòng)的調(diào)試模式:

可以看到僅僅是輸出了一行“debugger listening on port 5858”而已,后面并沒(méi)有繼續(xù)輸出“Server running at …..”。
這是因?yàn)橛?啟動(dòng)的調(diào)試模式并不會(huì)馬上執(zhí)行代碼,而是會(huì)等待調(diào)試器的連接(可以理解為在hello_world.js的第一行加了斷點(diǎn)),具體還是各位童鞋自己實(shí)踐吧。
參考: https://github.com/joyent/node/wiki/Using-Eclipse-as-Node-Applications-Debugger
原文:http://club.cnodejs.org/topic/4f16442ccae1f4aa27001105
【編輯推薦】