基于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判断登录与否并确定跳转页面的方法
Jan 30 Javascript
自己动手写的jquery分页控件(非常简单实用)
Oct 28 Javascript
jQuery中的通配符选择器使用总结
May 30 Javascript
详解Node.Js如何处理post数据
Sep 19 Javascript
手动初始化Angular的模块与控制器
Dec 26 Javascript
jQuery实现简单弹窗遮罩效果
Feb 27 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
Jan 22 Javascript
vue.js,ajax渲染页面的实例
Feb 11 Javascript
vue如何在自定义组件中使用v-model
May 14 Javascript
vue-cli3.0 环境变量与模式配置方法
Nov 08 Javascript
js实现3D粒子酷炫动态旋转特效
Sep 13 Javascript
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
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 读取和修改大文件的某行内容的代码
2009/10/30 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
基于vue实现分页效果
2017/11/06 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
python元组操作实例解析
2014/09/23 Python
python中循环语句while用法实例
2015/05/16 Python
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
优秀毕业大学生推荐信
2013/11/13 职场文书
自我评价正确写法范文
2013/12/10 职场文书
领导党性分析材料
2014/02/15 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
婚礼主持结束词
2014/03/13 职场文书
管理标语大全
2014/06/24 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫