12月阅读周·编写可测试的JavaScript代码:调试之Node.js调试篇

举报
叶一一 发表于 2024/12/23 18:13:24 2024/12/23
【摘要】 背景去年下半年,我在微信书架里加入了许多技术书籍,各种类别的都有,断断续续的读了一部分。没有计划的阅读,收效甚微。新年伊始,我准备尝试一下其他方式,比如阅读周。每月抽出1~2个非连续周,完整阅读一本书籍。这个“玩法”虽然常见且板正,但是有效,已经坚持阅读十一个月。已读完书籍:《架构简洁之道》、《深入浅出的Node.js》、《你不知道的JavaScript(上卷)》、《你不知道的JavaScr...

背景

去年下半年,我在微信书架里加入了许多技术书籍,各种类别的都有,断断续续的读了一部分。

没有计划的阅读,收效甚微。

新年伊始,我准备尝试一下其他方式,比如阅读周。每月抽出1~2个非连续周,完整阅读一本书籍。

这个“玩法”虽然常见且板正,但是有效,已经坚持阅读十一个月。

已读完书籍《架构简洁之道》、《深入浅出的Node.js》、《你不知道的JavaScript(上卷)》、《你不知道的JavaScript(中卷)》、《你不知道的JavaScript(下卷)》、《数据结构与算法JavaScript描述》、《WebKit技术内幕》、《前端架构:从入门到微前端》、《秒懂算法:用常识解读数据结构与算法》、《JavaScript权威指南》、《JavaScript异步编程设计快速响应的网络应用》

当前阅读周书籍编写可测试的JavaScript代码

Node.js调试

Node.js附带了一个很不错的命令行调试器。很容易就可以启动调试器:

node debug myscript.js

该调试器有一小组命令,可以使用help命令查看这些命令。

1.jpg

这些命令在前面提到的文档中有详细叙述,但其基础很简单:代码的启动、停止、单步执行;设置和清除断点;监控变量。

一个有趣的插曲是repl命令:它可以切换到REPL(read-evaluate-print-loop)模式,在该模式下,可以在当前上下文中或该调试器的作用域内执行JavaScript(包括检查变量)。退出REPL模式后,又可以回到调试器模式,从而执行前面所列的命令。

还可以在代码的某个地方使用熟悉的debugger语句触发一个断点。

watch命令并不十分有用,但它们非常有趣,可以“watch”一个变量,并在调试器在每个断点都会转储变量的内容——不仅仅是在显式的断点,还有step、next或out命令。目前还没有对条件断点的支持。

如果Node.js非常笨重,那么运行node debug <script>来交互式地调试Node.js脚本非常有用。Node.js运行的JavaScript引擎V8,为调试代码提供了一个基于JSON的协议。可以使用--debug和--debugbrk访问该模式。目前一个调试器一次只能连接一个会话,运行node debug ...将立即利用单个调试器连接。--debug和--debugbrk标记启动Node.js脚本,并等待或允许单个远程调试的连接(一次一个)。

对于V8 JSON调试协议的细节,可以在google的V8网站(https://code.google.com/p/v8/wiki/DebuggerProtocol)上找到。要使用它,只需连接到调试器端口(默认为端口5858)传递并接受JSON对象即可。有些开发人员经常忘了文档所需的Content- Length头。无论如何,还是有一个使用该协议的最简单实现的(https://github.com/zzo/pDebug/)。可以通过npm安装:

npm install pDebug -g

现在可以编写程序调试和练习应用程序了。首先,启动一个要检查或调试的Node.js程序:

node -debug-brk myProgram.js

使用V8 wiki上指定的API,可以以编程方式发送请求并从运行程序的本地或远程调试器获取获得响应和事件。让我们想象如何利用这些力量——条件断点将是一个非常好的开始!

使用像node-inspector这样的npm模块,还可以使用WebKit的调试器和开发工具来调试Node.js应用程序:

npm install node-inspector -g

现在,可以在调试器下启动Node.js程序了:

node -debug-brk myProgram.js

使用Chrome或Safari浏览器访问该URL:https://localhost:8080/debug?port=5858

调试器会打开,将可以调试Node.js程序!非常非常棒!因为PhantomJS是基于WebKit的,可以用它打开该URL,并在PhantomJS中打开调试器控制台。

总结

一旦PhantomJS公开调试器服务接口,就可以远程操作该调试器——有点滑稽!应该使用Chrome或Safari以可视化方式调试Node.js应用程序。


作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏️ | 留言📝

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。