1. 程式人生 > >瞭解windows下Node.js的除錯

瞭解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 繼續執行,直到遇到下一個斷點

next,n 單步執行

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)

把表示式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