瞭解windows下Node.js的除錯
首先寫一個簡單的程式,test.js:
var a = 1;
var b = 'world';
var c = function(x){
console.log('hello'+x+a);
};
c(b)
方法一、命令列下的單步除錯
在命令列下執行node debug test.js將會啟動除錯工具
以下是一些基本的命令進行單步跟蹤除錯:
run 執行指令碼,在第一行暫停
restart 重新執行指令碼
cont,c 繼續執行,直到遇到下一個斷點
step,s 單步執行並進入函式
out,o 從函式中步出
setBreakpoint(),sb()在當前行設定斷點
setBreakpoint('f()',sb(...))在函式f的第一行設定斷點
setBreakpoint('script.js',20),sb(...)在script.js的第20行設定斷點
clearBreakpoint,cb(...)清除所有斷點
breaktrace,bt顯示當前的呼叫棧
list(5) 顯示當前執行到的前後5行程式碼
watch(expr)把表示式expr加入監事列表
unwatche(expr)
watchers 顯示監視列表中所有的表示式和值
repl 在當前上下文開啟即時求值環境
kill 終止當前執行的指令碼
scripts 顯示當前已載入的所有指令碼
version 顯示V8的版本
方法二、遠端除錯
V8提供的除錯功能是基於TCP協議的,因此Node.js可以輕鬆地實現遠端除錯。在命令列下使用以下兩個語句之一可以開啟除錯伺服器:
node --debug[port] XXX.js 可以啟動除錯伺服器, 預設情況下除錯埠是5858
node --debug-brk[port] XXX.js預設埠1234
node -debug和node -debug -brk區別:前者執行指令碼時,指令碼會正常執行但不會暫停,在執行過程中除錯客戶端可以連線到除錯伺服器。如果要執行指令碼暫停執行等待客戶端連線,則應該使用後者。這時除錯伺服器在啟動後會立刻暫停執行指令碼,等待除錯客戶端連線。
當除錯伺服器啟動以後,可以用命令列除錯工具作為除錯客戶端連線,例如:
cmd進入到存放test.js的目錄,在一個終端中執行node --debug-brk debug.js
在另外一個終端中執行node debug 127.0.0.1:5858
實際上,當使用node debug test.js名除錯時,只不過將以上兩個步驟工作自動完成了而已。
方法三:使用node-inspector除錯Node.js
(1)使用npm install -g node-inspector命令安裝node--inspector
(2)然後在終端通過node --debug-brk=5858 test.js命令連線你要除錯的指令碼的除錯伺服器,再啟動node-inspector
(3)在瀏覽器中開啟http://127.0.0.1:8080/debug?port=5858