方法一 纯控制台调试:
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 进行调试。