1:基於Nodejs內建的調試器
Nodejs提供了一個內建調試器來協助開發人員調試應用程式。想要開啟調試器我們需要在代碼中加入debugger標籤,當Nodejs執行到debugger標籤時會自動暫停(debugger標籤相當於在代碼中開啟一個斷點)。代碼如下:
var path = url.parse(req.url).pathname;
debugger;
res.writeHead(200, {'Content-Type': 'text/plain'});
執行命令:node debug example.js 就可以進入偵錯模式。
在debug模式下,可以使用內建命令如repl去評估變數和運算式的值(如2所示)。我們也可以通過help命令來擷取完整的調試命令列表。
Commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb),
watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version
2:nodejs-chrome調試
前提條件
· 本文是在linux環境下實踐的
· 已經安裝nodejs
· 已經安裝npm
安裝node-inspector
npm install -g node-inspector
讓指令碼進入調試狀態
準備一段指令碼
test.js
function isSiemen(name) {
return 'siemenliu' === name;
}
debugger; // 在需要中斷的地方加上下面這句
var name = 'xiaoming';
isSiemen(name);
進入調試狀態
node --debug-brk test.js
這是可以看到這麼一句話”debugger listening on port 5858”游標在下一行待命 現在就已經做好了調試前的準備
啟動node-inspector
啟動node-inspector可以在任何目錄 因為之前安裝時已經加了-g的參數 而node-inspector與目前的目錄並沒有什麼直接聯絡 它會直接去連結剛才進入調試的5858連接埠
node-inspector &
啟動成功後可以看到類似這樣
重要:步驟不能打亂,必須先讓指令碼進入調試狀態,看到listening on port 5858後再啟動,否則會調試不成功
調試代碼
如果本機就直接webkit核心瀏覽器訪問
http://127.0.0.1:8080/debug?port=5858
非本機也可以通過直接存取啟動了node-inspector的ip地址的8080連接埠
http://REMOTE_IP:8080/debug?port=5858
就可以直接看到熟悉的調試介面啦,就像調試瀏覽器js一樣調試nodejs
現在直接按F8就會跳到剛才debug的位置
非常重要的一點
如果要做多次調試,當本次調試完成後,通常思維是我們只要再起一個node的debug模式依然是監聽5858連接埠,再去重新整理瀏覽器應該就能繼續下次調試,可惜這麼做是行不通滴。 這麼做會得到這麼一句話:not connect
然後inspector還是空空滴 想要再次調試需要中斷node-inspector的運行 快速鍵ctrl+c中斷後
尋找8080連接埠佔用進程
liof -i:8080
然後kill掉這個進程
kill -9 <NODE_PID>
再次啟動node-inspector就可以啦
node-inspector &
雖然有點不夠方便,但至少已經可以在瀏覽器中調試了
如果不kill會怎麼樣呢socket.io回報錯的,因為node還是監聽著8080連接埠 就象這樣 得到警告:warn - error raised: Error: listen EADDRINUSE