基于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 相关文章推荐
jQuery 1.4 15个你应该知道的新特性(译)
Jan 24 Javascript
js常用系统函数用法实例分析
Jan 12 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
Feb 02 Javascript
jQuery晃动层特效实现方法
Mar 09 Javascript
jquery表单验证插件formValidator使用方法
Apr 01 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
Apr 26 Javascript
Ajax和Comet技术总结
Feb 19 Javascript
js实现网页定位导航功能
Mar 07 Javascript
js时间查询插件使用详解
Apr 07 Javascript
js实现移动端轮播图效果
Dec 09 Javascript
JavaScript数组特性与实践应用深入详解
Dec 30 Javascript
vue 实现用户登录方式的切换功能
Apr 14 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
怎么在Windows系统中搭建php环境
2013/08/31 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
js动态拼接正则表达式的两种方法
2014/03/04 Javascript
Angularjs 基础入门
2014/12/26 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
跟老齐学Python之用while来循环
2014/10/02 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
让python 3支持mysqldb的解决方法
2017/02/14 Python
Python绘制的二项分布概率图示例
2018/08/22 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
python构造IP报文实例
2020/05/05 Python
python基于win32api实现键盘输入
2020/12/09 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
高一历史教学反思
2014/01/13 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
大学专科求职信
2014/07/02 职场文书
商务经理岗位职责
2014/08/03 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
长江七号观后感
2015/06/11 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
Python中的 Set 与 dict
2022/03/13 Python
SQL Server内存机制浅探
2022/04/06 SQL Server