当前位置: 首页 > news >正文

nodejs调试方法

Nodejs调试方法

1. Node debug

Nodejs提供了一个内建调试器来帮助开发者调试应用程序。使用debug模式时,Node.js 会启动Debugger模块,然后通过监听默认 5858 端口将命令行的输入传送到内建调试模块以达到调试的目的。

同时支持--debug 和 --debug-brk参数。这两个参数只会启动Debugger监听模式,不会进入命令行调试模式,而且前者会运行完所有代码,通常可用于事件调试,后者会在进入时中断,方便从头开始调试。

运行:node debug [需要调试的js]

调试命令说明:


repl 打开js上下文即时求值环境,可查看变量
run 执行脚本,在第一行暂停
restart 重新执行脚本
cont, c 继续执行,直到遇到下一个断点
next, n 单步执行
step, s 单步执行并进入函数
out, o  从函数中步出
setBreakpoint(), sb()   当前行设置断点
setBreakpoint(‘f()’), sb(...)   在函数f的第一行设置断点
setBreakpoint(‘script.js’, 20), sb(...) 在 script.js 的第20行设置断点
clearBreakpoint, cb(...)    清除所有断点
backtrace, bt   显示当前的调用栈
list(5) 显示当前执行到的前后5行代码
watch(expr) 把表达式 expr 加入监视列表
unwatch(expr)   把表达式 expr 从监视列表移除
watchers    显示监视列表中所有的表达式和值
kill    终止当前执行的脚本
scripts 显示当前已加载的所有脚本
version 显示v8版本

2. Node inspector

node-inspector是基于Node.js的Debugger模块进行调试的,是通过websocket方式来转向debug输入输出的。因此,我们在调试前要先启动node-inspector来监听Nodejs的debug调试端口。

安装: npm install –g node-inspector
运行:node-inspector & 或 node-inspector --web-port=5100 //启动调试,默认8080端口或者指定端口
node --debug-brk [需要调试的js] 或 node-debug [需要调试的js]

控制台会返回debugger listening on port 5858, 现在打开浏览嚣,访问 http://localhost:8080/debug?p... ,这时候就会打开一个很像Chrome内置调试工具的界面,并且代码断点在第一行,下面就可以使用这个来调试了。

缺点:页面不能刷新,每次调试需要重新运行 “node-debug [需要调试的js]"

3. V8_inspector

现如今,新版本的Chrome浏览器和新版本的Node.js支持通过一个新的调试协议能互相直接通讯了,就不再需要node-inspector了。

环境:

  • Node.js 6.3+
  • chrome 55+
  • 需下载 Chrome 浏览器 Canary 版 (Canary 版是专为开发者和早期用户设计的版本,可能会造成浏览器当机)

步骤:

  • 下载Chrome浏览器Canary版,打开 chrome://flags/#enable-devtools-experiments (启用开发者工具实验性功能)
  • 重启Chrome。打开开发者工具 -> 设置 -> Experiments,按SHIFT键6次,显示隐藏选项后勾选Node debugging
  • 在终端输入指令: node –-inspect [需要调试的js]。用Canary版浏览器打开终端输出的链接。

4. webstorm

安装webstorm,webstorm也是一个好软件,支持多平台。特别提醒ws是是一个商业收费软件,可以试用30天。

安装: webstorm编辑器

使用: 配置debug调试的配置信息(如下图)。再点击debug

图片描述

图片描述

图片描述

相关文章:

  • JetSpeed 2.0安装步骤
  • java 程序编写规则(自己总结)
  • [Vue安装教程]十分钟学会vue 安装
  • 我也来开博
  • Ora2Pg的安装和使用
  • 简单记录几个有用的sql查询
  • springboot_database项目介绍
  • 使用window-based模板创建一个单view程序(转)
  • Python初学基础
  • OSPF分解试验部分-LAB10:OSPF外部路由汇总
  • 问题-百度云同步盘登陆时提示155010错误
  • 电脑启动时必须要按F1才能进入系统
  • mongodb 配置单实例与双实例
  • 2017-9-16
  • 10、Windows驱动开发技术详解笔记(6) 基本语法回顾
  • [nginx文档翻译系列] 控制nginx
  • 【RocksDB】TransactionDB源码分析
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • CSS 三角实现
  • express如何解决request entity too large问题
  • Javascript Math对象和Date对象常用方法详解
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Mac转Windows的拯救指南
  • PHP 的 SAPI 是个什么东西
  • spring-boot List转Page
  • SQLServer之创建显式事务
  • Travix是如何部署应用程序到Kubernetes上的
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 百度地图API标注+时间轴组件
  • 编写符合Python风格的对象
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 聊聊flink的BlobWriter
  • 前端js -- this指向总结。
  • 前端自动化解决方案
  • 区块链分支循环
  • 入口文件开始,分析Vue源码实现
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 再谈express与koa的对比
  • 智能合约Solidity教程-事件和日志(一)
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​flutter 代码混淆
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (第一天)包装对象、作用域、创建对象
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • ./configure,make,make install的作用
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 回调、接口回调、 委托
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)