方法一 純控制檯調試:
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 的版本
實例: 新建文件目錄結構如下:
---- > app.js
---- > User.js
---- > UserClass.js
UserClass.js
functionUserClass(name, age ,friends) {
this.name=name;
this.age=age;
this.frieds=friends;
}
UserClass.prototype.sayFriends=function() {
return this.frieds;
}
UserClass.prototype.sayHello=function() {
console.log('hello my name is'+this.name);
}
module.exports=UserClass;
User.js
varUserClass=require('./UserClass');
function User(name,age,friends){
UserClass.call(this , name , age , friends);
}
User.prototype=new UserClass;
module.exports=User;
App.js
varUser=require('./User');
var User1= newUser('jack',20,['a','b']);
console.log(User1.sayFriends());
var a =1;
var b = 'world';
var c=function(x) {
console.log('hello' + x+ a);
}
c(b);
執行命令 node debug app.js 啓動調試工具:
默認程序會在第一行暫停。執行next 或n 命令程序會執行下一條,即在第二條語句暫停。
當前控制檯默認只顯示3條語句,可以通過list(10) 令其顯示當前執行到語句的前後10條代碼。
通過scripts命令查看當前已加載的腳本。* 代表當前正在調試 腳本文件。
通過setBreakpoint(‘User.js’, 4) 或者sb(‘ User.js’,4) 命令在User.js 文件第3行代碼設置斷點。
通過step 或 s單步執行進入函數並查看調試過程
使用repl命令 在當前上下文打開即時求值環境
Ctrl+ c c 退出求值環境。
使用out或o 命令步出當前函數。連續兩次o 操作後程序又返回app.js執行環境。
執行c命令,程序一直運行直到結束。
方法二 瀏覽器端調試:
大部分基於node.js的應用都是運行在瀏覽器中的,這也催生了一款強大的調試工具node-inspector 。 它擁有強大的調試功能和友好的用戶界面,同時它的使用方法十分簡便。
首先,使用npm install -g node-inspector 在全局環境安裝node-inspector。
之後再命令行中執行 ”node –debug app.js“
再打開一個窗口,執行命令”node-inspector &”
通過URL http://127.0.0.1:8080/debug?port=5858就可以進行調試了。
注意:node-inspector 使用了 WebKit Web Inspector,因此只能在 Chrome、Safari等 WebKit 內核的瀏覽器中使用,而不支持 Firefox 或 Internet Explorer。
其他調試方式也有很多,比如依靠ide的方法。可以使用eclipse或者webstrom 進行調試。