基于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 相关文章推荐
Javascript 构造函数 实例分析
Nov 26 Javascript
在表单提交前进行验证的几种方式整理
Jul 31 Javascript
jquery实现键盘左右翻页特效
Apr 30 Javascript
AngularJS教程之环境设置
Aug 16 Javascript
jQuery 选择符详细介绍及整理
Dec 02 Javascript
jQuery实现的简单在线计算器功能
May 11 jQuery
基于vue-cli配置lib-flexible + rem实现移动端自适应
Dec 26 Javascript
Vue slot用法(小结)
Oct 22 Javascript
vue踩坑记录之数组定义和赋值问题
Mar 20 Javascript
js通过循环多张图片实现动画效果
Dec 19 Javascript
ant-design表单处理和常用方法及自定义验证操作
Oct 27 Javascript
关于Js中new操作符的作用详解
Feb 21 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获取Google AJAX Search API 数据的代码
2010/03/12 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
python数据结构之二叉树的建立实例
2014/04/29 Python
Python列表list数组array用法实例解析
2014/10/28 Python
Python中psutil的介绍与用法
2019/05/02 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
Python 必须了解的5种高级特征
2020/09/10 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
上海某公司.net方向笔试题
2014/09/14 面试题
大学学年自我鉴定
2013/10/28 职场文书
电子商务专业学生的自我鉴定
2013/11/28 职场文书
竞选演讲稿范文
2013/12/28 职场文书
市场调查策划方案
2014/06/10 职场文书
校园环保标语
2014/06/13 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
志愿者工作心得体会
2016/01/15 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python