基于node.js之调试器详解


Posted in Javascript onAugust 22, 2017

1.在命令行窗口中,可以使用"node debug" 命令来启用调试器,代码如下:

node debug<需要被执行的脚本文件名>接下来根据一个实例进行学习调试过程:

编写app.js文件进行调试:

console.log('hello,word')
function foo(){
 console.log('hello,foo')
 return 100;
}
var bar = 'This is a pen';
var http = require('http')
var i = foo();
console.log(i)

1 在命令行窗口使用"node debug"命令,结果如下所示:

[root@kuber2 webproject]# node debug app.js
< Debugger listening on [::]:5858
connecting to 127.0.0.1:5858 ... ok
break in app.js:1
> 1 console.log('hello,word')
 2 function foo(){
 3 console.log('hello,foo')
debug>

在Node.js中提供了一个可以通过简单TCP协议来访问的调试器,进入调试后,首先连接调试器,如上图所示出现Debugger并后面跟有ok,说明调试器已经成功使用。"break in app.js:1" 表示脚本程序暂停的位置

2 继续执行可输入"cont"或"c",继续执行剩余的代码,结果如下所示:

[root@kuber2 webproject]# node debug app.js
< Debugger listening on [::]:5858
connecting to 127.0.0.1:5858 ... ok
break in app.js:1
> 1 console.log('hello,word')
 2 function foo(){
 3 console.log('hello,foo')
debug> c
< hello,word
< hello,foo
< 100

3 如果不需要执行剩余的所有脚本代码,输入"next"或"n"将程序执行到下一句可执行代码前,如下所示:

[root@kuber2 webproject]# node debug app.js
< Debugger listening on [::]:5858
connecting to 127.0.0.1:5858 ... ok
break in app.js:1
> 1 console.log('hello,word')
 2 function foo(){
 3 console.log('hello,foo')
debug> n
< hello,word
break in app.js:6
 4 return 100;
 5 }
> 6 var bar = 'This is a pen';
 7 var http = require('http')
 8 var i = foo();
debug>

4 如果想进入函数进行调试,可以在函数被调用出输入命令"step"或"s",进入函数体,如图所示:

break in app.js:8
 6 var bar = 'This is a pen';
 7 var http = require('http')
> 8 var i = foo();
 9 console.log(i)
 10 
debug> s
break in app.js:3
 1 console.log('hello,word')
 2 function foo(){
> 3 console.log('hello,foo')
 4 return 100;
 5 }
debug>

5 在函数体中可以用"n",逐步进行调试,还可输入"out"或"o" 立即执行完函数内所有代码,程序将暂停到被调用函数代码后的一句代码前,如图所示:

break in app.js:3
 1 console.log('hello,word')
 2 function foo(){
> 3 console.log('hello,foo')
 4 return 100;
 5 }
debug> n
< hello,foo
break in app.js:4
 2 function foo(){
 3 console.log('hello,foo')
> 4 return 100;
 5 }
 6 var bar = 'This is a pen';
debug> o
break in app.js:9
 7 var http = require('http')
 8 var i = foo();
> 9 console.log(i)
 10 
 11 });
debug>

6 利用watch可以观察变量或一些表达式的值,利用unwatch可以取消观看,具体应用如下代码所示:

break in app.js:1
> 1 console.log('hello,word')
 2 function foo(){
 3 console.log('hello,foo')
debug> watch("i")
debug> watch("i==100")
debug> n
< hello,word
break in app.js:6
Watchers:
 0: i = undefined
 1: i==100 = false

 4 return 100;
 5 }
> 6 var bar = 'This is a pen';
 7 var http = require('http')
 8 var i = foo();
debug> n
break in app.js:7
Watchers:
 0: i = undefined
 1: i==100 = false

 5 }
 6 var bar = 'This is a pen';
> 7 var http = require('http')
 8 var i = foo();
 9 console.log(i)
debug> n
break in app.js:8
Watchers:
 0: i = undefined
 1: i==100 = false

 6 var bar = 'This is a pen';
 7 var http = require('http')
> 8 var i = foo();
 9 console.log(i)
 10 
debug> n
< hello,foo
break in app.js:9
Watchers:
 0: i = 100
 1: i==100 = true

 7 var http = require('http')
 8 var i = foo();
> 9 console.log(i)
 10 
 11 });
debug> unwatch("i")
debug> unwatch("i==100")
debug> n
< 100
break in app.js:11
 9 console.log(i)
 10 
>11 });
debug>

7 可以利用setBreakpoint(filename,line)或cb(filename,line),设置断点,第一个参数为设置断点的文件名,不填默认为i正在运行的文件,line为需要加断点的行号;可以利用clearBreakPoint(filename,line)或cb(filename,line)取消断点

8 使用list(n)可以显示所调试语句的前几后与后几行代码

9 使用repl可以特推出debug模式

10 使用restart可以重新开始文本调试

11 使用kill终止脚本文件调试

12 利用kill终止文本调试后可利用run重新开始

13 利用backtrace或bt可以返回运行代码的所处位置

14 利用script可以查看所有被加载的模块名称

以上这篇基于node.js之调试器详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
[转]JS宝典学习笔记
Feb 07 Javascript
IE8下关于querySelectorAll()的问题
May 13 Javascript
Knockout数组(observable)使用详解示例
Nov 15 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
js动态添加的DIV中的onclick事件简单实例
Jul 25 Javascript
JavaScript中函数声明与函数表达式的区别详解
Aug 18 Javascript
AngularJs Modules详解及示例代码
Sep 01 Javascript
jQuery ajax的功能实现方法详解
Jan 06 Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 Javascript
jQuery实现弹窗下底部页面禁止滑动效果
Dec 19 jQuery
微信小程序页面间值传递的两种方法
Nov 26 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
Jan 08 Javascript
js获取css的各种样式并且设置他们的方法
Aug 22 #Javascript
简单实现js上传文件功能
Aug 21 #Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 #Javascript
JavaScript实现简单图片轮播效果
Aug 21 #Javascript
Javascript中 toFixed四舍六入方法
Aug 21 #Javascript
webpack使用 babel-loader 转换 ES6代码示例
Aug 21 #Javascript
JavaScript创建对象的七种方式全面总结
Aug 21 #Javascript
You might like
PHP编实现程动态图像的创建代码
2008/09/28 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
jQuery 选择器理解
2010/03/16 Javascript
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
Mac安装python3的方法步骤
2019/08/09 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
python关于倒排列的知识点总结
2020/10/13 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
优秀导游先进事迹材料
2014/01/25 职场文书
办公室综合文员岗位职责范本
2014/02/13 职场文书
实用的简历自我评价
2014/03/06 职场文书
《假如》教学反思
2014/04/17 职场文书
服务承诺书范文
2014/05/19 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
合作协议书范本
2014/10/25 职场文书
谢师宴答谢词
2015/01/05 职场文书
运动会200米广播稿
2015/08/19 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL