调试 Node.js
调试 Node.js
调试器
调试器是一种软件工具,用于通过分析方法观察和控制程序的执行流
- 设计目标:帮助找出 bug 的根本原因,并帮助你解决它
- 工作方式:将程序托管在自己的执行进程中或者作为附加到正在运行的程序(例如 Node.js)的独立进程运行
- 主要好处:可以监视程序运行,可以一次跟踪一个程序代码行的执行
几乎所有调试器所具有的两个最重要的功能是:
- 控制程序执行
- 观察程序的状态
调试是一个多阶段的过程,通常遵循以下步骤:
- 识别程序中的 bug
- 查找 bug 在代码中的位置
- 分析 bug 发生的原因
- 修复 bug
- 验证修复是否有效
使用 Node.js 内置调试器进行调试
在 Node.js 程序中发现错误后,你面临的第一个挑战就是在代码中找到错误所在的位置
- 使用断点,可以使程序正常运行,直到到达怀疑错误所在的关键代码部分
- 有一种通用的方法可以强制任何 JavaScript 调试器在给定的点暂停,使用
debugger语句
function testBasket(m){
debugger; // // 设置断点
const basket = getCurrentBasket();
basket.add(m);
}
调试器拥有对执行环境的完全访问权限
- 抱有恶意者可以使用它在你的 Node.js 进程中注入任意代码,必须启用一种称为检查器模式的特殊模式才能允许调试
- 使用
--inspect选项,允许 Node.js 进程侦听调试器客户端,该调试器将自己附加到进程并控制程序执行 - 也可以使用
--inspect-brk选项,该选项的工作方式与 --inspect 相同,但会在代码开始之前中断代码执行
在启用了检查模式的情况下启动 Node.js 后,可以使用任何兼容的调试器客户端连接到 Node.js 进程
避免将 Node.js 调试器端口绑定到
公共 IP 地址或0.0.0.0,否则可以能连接到 IP 地址的任何客户端都可能连接并控制 Node.js 进程
内置调试器
使用
node inspect此命令行调试器与 Node.js 捆绑在一起node-inspect 调试器将在启用检查模式的情况下运行 Node.js,同时启动集成的交互式调试器
你现在可以使用多个命令来控制程序的执行(以下从概念上来说适用于所有调试)
- cont 或 c: 继续,继续执行到下一个断点或程序末尾
- next 或 n: 执行下一行,执行当前上下文中的下一行代码
- step 或 s: 单步执行,与 next 不同之处在于如果下一行代码是函数调用,则转到此函数代码的第一行
- out 或 o: 单步跳出,如果当前执行上下文在函数的代码内,请执行该函数的其余代码,然后跳回到最初调用该函数的代码行
- restart 或 r: 重启,重启程序并在代码开始之前暂停执行
断点控制
setBreakpoint()或sb(): 在当前行上添加断点setBreakpoint(<N>)或sb(<N>): 在行号 N 上添加一个断点clearBreakpoint('myscript.js', <N>)或cb('myscript.js', <N>): 清除行号 N 处文件 myscript.js 中的断点
获取有关当前执行点的信息
list(<N>): 列出包含当前执行点之前和之后 N 行的源代码exec <EXPR>: 在当前执行上下文中计算表达式
还可以使用 help 命令显示可用命令的完整列表
请按
Ctrl+D或选择命令.exit
运用 Visual Studio Code 进行调试:官网文档
调试 Node.js的更多相关文章
- 用node-inspector调试Node.js(转自NOANYLOVE'S BLOG)
原文地址:http://www.noanylove.com/2011/12/node-the-inspector-debugging-node-js/ 用node-inspector调试Node.js ...
- vscode 调试node.js
在开发的过程中,几乎不可能一次性就能写出毫无破绽的程序,断点调试代码是一个普遍的需求. 作为前端开发工程师,以往我们开发的JavaScript程序都运行在浏览器端,利用Chrome提供的开发者工具就可 ...
- 使用Chrome DevTools直接调试Node.js与JavaScript(并行)
Good News: 现在我们可以用浏览器调试node.js了!!! 前提 Node.js 6.3+, 这个可上Node.js官网自行下载: Chrome 55+. 如果您本地的chrome升级到最新 ...
- 调试 node.js 程序
调试 node.js 程序 在程序开发中,如何快速的查找定位问题是一项非常重要的基本功.在实际开发过程中,或多或少都会遇到程序出现问题导致无法正常运行的情况,因此,调试代码就变成了一项无法避免的工作. ...
- 【译】在 Chrome 开发者工具中调试 node.js
原文链接 : Debugging Node.js in Chrome DevTools 原文作者 : MATT DESLAURIERS 译文出自 : 掘金翻译计划 译文链接 : https://git ...
- 使用 node-inspector 调试 Node.js
大部分基于 Node.js 的应用都是执行在浏览器中的, 比如强大的调试工具 node-inspector. node-inspector 是一个全然基于 Node.js 的开源在线调试工具,提供了强 ...
- 用 Visual Studio Code 调试 Node.js
环境: Visual Studio Code Node.js 1. 关闭运行中的程序 2.打开入口文件,我这里的入口文件为 app.js 3.点击左侧菜单栏的 debug 按钮 4.点击运行按钮 5 ...
- node.js系列:(调试工具)node-inspector调试Node.js应用
如果你在编写Node.js代码,node-inspector是必备之选,比Node.js的内置调试器好出许多.使用起来跟Chrome的javascript调试器很相似. 使用npm安装: $ npm ...
- WebStorm远程调试Node.js
1.服务启动IP及端口,如果是云服务,IP选用服务器内网IP.同时需要防火墙需要添加端口. #添加端口 $ firewall-cmd --zone=public --add-port=9229/tcp ...
- Node.js实战(四)之调试Node.js
当项目逐渐扩大以后,功能越来越多,这时有的时候需要增加或者修改,同时优化某些功能,就有可能出问题了.针对于线上Linux环境我们应该如何调试项目呢? 别怕,Node.js已经为我们考虑到了. 通过 n ...
随机推荐
- 异构数据源同步之数据同步 → DataX 使用细节
开心一刻 中午我妈微信给我消息 妈:儿子啊,妈电话欠费了,能帮妈充个话费吗 我:妈,我知道了,我帮你充 当我帮我妈把话费充好,正准备回微信的时候,我妈微信给我发消息了 妈:等会儿子,不用充了,刚刚有个 ...
- 大数据平台搭建手册——hadoop
从0开始 超详细搭建hadoop平台手册 创建三台使用centos7操作系统的虚拟机 基础环境配置 ps:不建议使用DHCP,因为ip地址会变动 配置ip 1.master [root@master ...
- JavaSE 数据类型以及基本转化与包装
目录 数据类型. 1.基本类型(八个) 数值型 整型类型 byte型:1字节 8bit位 第一位是符号位 null short型:2字节 int 型:4字节 long型:8字节 浮点类型 float ...
- vue基础使用
传统dom操作 使用js或jquery库对html页面结构中的指定的区域输出数据 使用vue实现 在html页面中使用好vue需要完成如下步骤即可 引入vue.js文件 定义给vue.js管理的dom ...
- journalctl 命令使用总结
转载请注明出处: journalctl 命令是 Linux 系统中一个用于查询和管理系统日志的命令行工具,它基于 systemd 的日志守护进程 systemd-journald 的功能. 1. 介绍 ...
- windows 开发者注册后写代码,这个给钱吗?
- Django设置、使用Cookie
使用背景: 前端根据用户选择的模块,结合ajax实现局部刷新,进到到具体模块页面后,返回,希望保持到原来选择的模块上,这就需要保存当前选择的模块id; 尝试: 1.使用Js的设置cookie,douc ...
- 架构师必知的11种API性能优化方法
前言 接口性能优化是后端开发人员经常碰到的一道面试题,因为它是一个跟开发语言无关的公共问题. 这个问题既可以很简单,也可以相当复杂. 有时候,只需要添加一个索引就能解决. 有时候,代码需要进行重构. ...
- C++之printf函数
背景 C++中可以使用cout来输出. 但是cout输出一些格式化的数据非常麻烦. 比如: hour,min和sec代表当前时间,需求:按12:00:00格式输出当前时间. //使用cout输出 co ...
- EIGRP总结
EIGRP 思科私有,2013年公开,其他厂商不支持,所以用得不是很多 几秒钟就能完成收敛 触发更新,只要网络不发生变化就不会发生更新 按需更新,只更新变化的部分 ...