用了幾天node.js感受很新奇,可是調試問題實在是愁煞人,開始的時候懶的學習調試方法,看看異常內容就能夠了,但隨着代碼複雜程度的上升,並非全部錯誤都是語法錯誤了,不調試搞不定了,只好搜搜資料,學習了一下怎麼調試。node
使用過PHP的同窗確定都清楚,修改了某個腳本文件後,只要刷新頁面服務器就會加載新的內容,可是node.js在第一次引用到某個文件解析後會將其放入內存,下次訪問的時候直接在內存中獲取,以提升效率,可是這對咱們開發形成必定困擾,修改了某個module後只能重啓服務器後才能生效,調試起來效率仍是很低的。web
因而乎node.js中有了supervisor插件幫咱們堅實文件改動,自動重啓服務器,supervisor是node.js的一個包,安裝起來很簡單,使用npm的安裝命令就能夠,由於咱們須要在控制檯運行,因此須要安裝在全局環境中chrome
npm install -g supervisor
這樣咱們就可使用supervisor啓動腳本了npm
supervisor index
當咱們對文件作了改動的時候,能夠看到控制檯多了三行,服務器已經重啓了瀏覽器
node.js自己支持調試,在語句前面加debugger指令就能夠添加一個斷點服務器
var server=require('./server'), router=require('./router'), requestHandlers=require('./requestHandlers'); debugger; var handle={}; debugger; handle['/']=handle['/start']=requestHandlers.start; debugger; handle['/upload']=requestHandlers.upload; handle['/show']=requestHandlers.show; debugger; server.start(8080,router.route,handle);
在啓動服務的時候添加debug 選項websocket
node debug index.js
這時候輸入一些指令就能夠單步調試、到斷點監視局部變量等,看個命令圖,不少命令都有其縮寫形式eclipse
命令 | 功能 |
run | 執行腳本,在第一行暫停 |
restart | 從新執行腳本 |
cont, c | 繼續執行,直到遇到下一個斷點 |
next, n | 單步執行 |
step, s | 單步執行並進入函數socket |
out, o | 從函數中步出svn |
setBreakpoint(), sb() | 當前行設置斷點 |
setBreakpoint(‘f()’), sb(...) |
在函數f的第一行設置斷點 |
setBreakpoint(‘script.js’, 20), sb(...) |
在 script.js 的第20行設置斷點 |
clearBreakpoint, cb(...) |
清除全部斷點 |
backtrace, bt |
顯示當前的調用棧 |
list(5) |
顯示當前執行到的先後5行代碼 |
watch(expr) |
把表達式 expr 加入監視列表 |
unwatch(expr) |
把表達式 expr 從監視列表移除 |
watchers |
顯示監視列表中全部的表達式和值 |
repl |
在當前上下文打開即時求值環境 |
kill |
終止當前執行的腳本 |
scripts |
顯示當前已加載的全部腳本 |
version |
顯示v8版本 |
詳細使用有興趣同窗能夠本身摸索,我是沒興趣。。。太複雜了,看幾個貼心的
是的,Eclipse又威武了,連node.js也能調試,在Eclipe官網上下載eclipse,而後 Help->Install New Software->Add
在彈出的窗口添加一個源,名字好記就行,地址是http://chromedevtools.googlecode.com/svn/update/dev/
等一下子後彈出選擇界面,選中第一個
一路next到最後finish,下載完成後會提醒重啓Eclipse,完成以後就能夠調試node.js了,打開想調試的文件,切換Eclipse到調試視圖,點擊工具欄右邊的小三角,選擇Debug Configuration
雙擊 Standard V8 VM 選項建立一個新的配置,填好相應參數
經過 --debug-brk選項在控制檯啓動node服務器
node --debug-brk=5858 test.js
點擊Eclipse剛纔界面的debug按鈕,就能夠像調試Java同樣調試node.js了
大部分node.js應用都是web應用,因此一些基於Chrome的在線調試工具應運而生,最出名的應該就是node-inspector了,這是一個node.js的模塊,安裝、使用至關的方便,首先使用npm把其安裝在全局環境中
npm install -g node-inspector
node-inspector是經過websocket方式來轉向debug輸入輸出的。所以,咱們在調試前要先啓動node-inspector來監聽node.js的debug調試端口。默認狀況下node-inspector的端口是8080,能夠經過參數--web-port=[port]來設置端口。
在啓動node-inpspector以後,咱們能夠經過--debug或--debug-brk來啓動node.js程序。
這時候就能夠訪問http://127.0.0.1:8888/debug?port=5858 使用瀏覽器調試了,看看界面,不用多說什麼了吧
參考:node.js開發指南
PS:我的以爲仍是最後一種最方便