標籤:body exp 程式 div 檔案解析 int() 語法錯誤 函數 異常
用了幾天node.js感覺很新奇,但是調試問題實在是愁煞人,開始的時候懶的學習調試方法,看看異常內容就可以了,但隨著代碼複雜程度的上升,並不是所有錯誤都是語法錯誤了,不調試搞不定了,只好搜搜資料,學習了一下怎麼調試。
不用每次都重啟服務的supervisor
使用過PHP的同學肯定都清楚,修改了某個指令檔後,只要重新整理頁面伺服器就會載入新的內容,但是node.js在第一次引用到某個檔案解析後會將其放入記憶體,下次訪問的時候直接在記憶體中擷取,以提高效率,但是這對我們開發造成一定困擾,修改了某個module後只能重啟伺服器後才會生效,調試起來效率還是很低的。
於是乎node.js中有了supervisor外掛程式幫我們堅實檔案改動,自動重啟伺服器,supervisor是node.js的一個包,安裝起來很簡單,使用npm的安裝命令就可以,因為我們需要在控制台運行,所以需要安裝在全域環境中
npm install -g supervisor
這樣我們就可以使用supervisor啟動指令碼了
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 選項
node debug index.js
這時候輸入一些指令就可以單步調試、到斷點監視局部變數等,看個命令圖,很多命令都有其縮寫形式
node.js調試命令
| 命令 |
功能 |
| run |
執行指令碼,在第一行暫停 |
| restart |
重新執行指令碼 |
| cont, c |
繼續執行,直到遇到下一個斷點 |
| next, n |
逐步執行 |
| step, s |
逐步執行並進入函數 |
| out, o |
從函數中步出 |
| 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調試
是的,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-inspector調試
大部分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:個人覺得還是最後一種最方便
node.js調試