node.js調試

來源:互聯網
上載者:User

標籤: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調試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.