node.js之调试器

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之调试器的更多相关文章

  1. Node.js包管理器Yarn的入门介绍与安装

    FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在昨天, Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .咱 ...

  2. Node.js包管理器:

    Node.js包管理器: 当我们要把某个包作为工程运行的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装 使用全局模式安装的包并不能直接在JavaScript文件中用require ...

  3. Node.js 种子下载器

    Node.js 种子下载器 庆祝 2018 国庆,制作了一个 Node.js 的种子下载器.爬取页面,根据页面的链接,破解另外一个网站,下载种子文件.项目比较简单,爬取页面没有使用任何爬虫框架.项目源 ...

  4. node.js启动调试方式

    node.js启动调试方式(nodeJs不能像js一样在控制台调试) 以express项目为例,启动路径是localhost:3000 一.通过node命令启动 node server/bin/www ...

  5. node.js 远程调试debug产线环境代码

    一.背景: 产线机器出bug,不能重启服务,需要保留现场,问题不好排查,只能靠远程debug. 二.实现步骤 1. 登录远程机器执行如下命令,nodePid为node服务的pid kill -usr1 ...

  6. npm --- Node.js包管理器

    目录 1. 安装Node.js 2. 运行npm 3. npm介绍 3.1 安装插件 3.2 更新插件 3.3 卸载插件 3.4 查看当前目录中的插件列表 4. 使用cnpm 4.1 安装 npm( ...

  7. 【Node.js】Node.js的调试

    目录结构: contents structure [-] 使用console.log() 使用Chrome DevTools 使用Visual Studio Code 与JavaScript运行在浏览 ...

  8. Node.js 包管理器 NPM 讲解

    包管理器又称软件包管理系统,它是在电脑中自动安装.配制.卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用.对于我们业务开发也很受益,相同的东西不必重复去造轮子. 每个工具或 ...

  9. 9.Node.js 包管理器npm

    npm 是 Node.js  官方提供的包管理工具, 用于 Node.js包的发布.传播.依赖控制 安装 express ==> 流行的基于Node.js的Web开发框架,可以快速地搭建一个完整 ...

随机推荐

  1. Android系统--输入系统(十三)Dispatcher线程情景分析_Reader线程传递事件

    Android系统--输入系统(十三)Dispatcher线程情景分析_Reader线程传递事件 1. 输入按键 我们知道Android系统的按键分为三类:(1)Global Key;(2)Syste ...

  2. Spring3 MVC DispatcherServlet 配置问题

    1. Spring MVC 是通过servlet来进行转发的,一般在web.xml中配置如下: <servlet> <servlet-name>dispatcher</s ...

  3. ActiveMQ结合WebScoket应用例子以及介绍

    一.ActiveMQ的介绍? 1.JMS基础概念 JMS(java Message Service) 即使java消息服务,它提供标准的产生.发送.接收的接口简化企业应用开发,它支持两种消息通信模型: ...

  4. 一个简单的java贷款程序

    代码如下: //计算贷款package ClassDemo;import javax.swing.JOptionPane; public class ComputeLoan { public stat ...

  5. NLP中的用N-gram语言模型做英语完型填空的环境搭建

    本文是对xing_NLP中的用N-gram语言模型做完型填空这样一个NLP项目环境搭建的一个说明,本来想写在README.md中.第一次用github中的wiki,想想尝试一下也不错,然而格式非常的混 ...

  6. 针对Oracle数据库中SCOTT方案的多表查询一个例子

    查询出每个员工的姓名.职位.月薪.所属部门名.月薪等级及其领导的姓名.职位.所属部门名.月薪等级.select e.ename 员工姓名,e.job 员工职位,e.sal 员工月薪,d.dname 员 ...

  7. 51nod_1119:机器人走方格 V2

    题目链接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 转化成杨辉三角就好辣@_@ #include< ...

  8. 第一章:火狐浏览器 : 环境配置: FireFox 版本38 + jdk 7 + selenium 2.53.6 + selenum-version 2.48.2

    配置一套完整的 selenium + Java + Firefox38  环境: 1. 火狐浏览器的版本 : 38 2. JDK 安装 1.7 版本的 3. 安装 Python 的版本是 2.7 4. ...

  9. 对JavaScript闭包的理解

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 在开始了解闭包前我们必须要先理解JavaScript的变量作用域. 一.变量的作用域无非就是两 ...

  10. 快速搞定selenium grid分布式

    写这篇文章,似乎有点重复造轮子的嫌疑.当看了几篇相关文章后,我还是决定把半年前的半成品给完成了. 以传统的方式部署分布式Selenium Grid集群需要耗费大量时间和机器成本来准备测试环境. Sna ...