1 示例代码
app.js
var express = require('express');
var app = express();
var req_times = 0;
app.all('/*', function(req, res){
req_times++;
var req_url = req.url;
var req_method = req.method;
var req_query = req.query;
res.end('debugger test');
});
app.listen(3000);
console.log('app running on port 3000...');
2 插入断点
方法:在需要设置断点的地方插入debugger
关键字,程序会在这里暂停运行。
app.all('/*', function(req, res){
debugger;
req_times++;
debugger;
var req_url = req.url;
debugger;
var req_method = req.method;
debugger;
var req_query = req.query;
debugger;
res.end('debugger test');
});
3 开启debugger 命令模式
node debug app.js
PS O:\DEMO\leran-nodejs-debugger> node debug app.js
< Debugger listening on port 5858
connecting to 127.0.0.1:5858 ... ok
break in O:\DEMO\leran-nodejs-debugger\app.js:1
> 1 var express = require('express');
2 var app = express();
3
debug>
4 debug模式下常用命令
4.1 步骤跳跃相关命令
cont ,c 继续执行
next , n 跳到下一个断点处
step , s 进入某个函数
out , o 跳出某个函数
pause 暂停执行某个函数
setBreakpoint(), sb() 再当前行设置断点
setBreakpoint(line), sb(line) 在指定行设置断点
clearBreakpoint(‘script.js’, 1), cb(…) 清除某行的断点
4.2 信息查看相关命令
backtrace, bt 打印当前执行记录
list(5) 打印当前执行代码的前后5行
watch(‘expr’) 增加一个表达式到观察列表
unwatch(‘expr’) 删除一个表达式
watchers 列出所有观察列表,表达式和值
repl 进入repl环境
exec expr 执行一个表达式在断点的上下文
4.3 执行控制
run 运行脚本,在debug的开始出
restart 重新运行脚本
kill 关闭脚本
4.4 其他方面
scripts 列出所有已经加载的脚本
version 查看v8的版本号
5 命令演示
查看变量值需要进入==repl==环境。只需要在命令模式输入repl,按回车便可以进入repl环境。
debug> repl
Press Ctrl + C to leave debug repl
> req_times
0
debug> n
break in O:\DEMO\leran-nodejs-debugger\app.js:12
10 req_times++;
11
>12 debugger;
13
14 var req_url = req.url;
debug> repl
Press Ctrl + C to leave debug repl
> req_times
1
> req.method
'GET'
> req.url
'/'
debug> bt
#0 app.js:12:5
#1 layer.js:95:5
#2 route.js:131:13
#3 route.js:125:14
#4 route.js:125:14
#5 route.js:125:14
#6 route.js:125:14
#7 route.js:112:3
#8 layer.js:95:5
#9 index.js:277:22
debug> list(4)
8 debugger;
9
10 req_times++;
11
>12 debugger;
13
14 var req_url = req.url;
15
16 debugger;
debug> watchers
debug> watch('req_times')
debug> watchers
0: req_times = 1
debug> scripts
* 58: app.js
61: index.js
62: express.js
63: index.js
64: application.js
65: index.js
66: node.js
70: debug.js
71: index.js
72: index.js
73: index.js
74: index.js
75: index.js
76: index.js
77: index.js
78: route.js
79: array-flatten.js
80: layer.js
81: index.js
82: index.js
94: index.js
95: index.js
96: index.js
97: index.js
98: init.js
99: query.js
100: index.js
101: stringify.js
102: utils.js
103: parse.js
104: view.js
105: utils.js
106: index.js
107: index.js
108: index.js
109: index.js
110: index.js
111: inherits.js
112: index.js
113: index.js
114: index.js
118: index.js
119: mime.js
120: index.js
127: index.js
128: index.js
129: ipaddr.js
133: request.js
134: index.js
135: index.js
136: index.js
137: index.js
138: index.js
139: index.js
144: response.js
145: index.js
146: index.js
147: index.js
149: index.js
debug>
2016/8/27
参考:http://nodejs.cn/doc/node/deb…
by:wdd