• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

使用Node.js进行调试

我觉得调试与其他任何开发周期一样重要。因此,揭开调试工作的神秘面纱总是一个好习惯,让它更容易,更省时,这样我们就可以按时结束工作并减轻压力。 

与大多数语言一样,node 提供了一些出色的调试工具,可以轻松发现和修复代码中的缺陷。我一直提倡使用调试器,因为我个人发现使用调试器确实消除了任何猜测的需要,并且总体上使我们成为更好的开发人员。 

本指南适用于已经使用 Node 的开发人员和管理员。它假定在实际水平上对语言有基本的理解。

使用调试器

Node.js 包含一个功能齐全的进程外调试实用程序,可通过简单 的基于 TCP 的协议 和内置调试客户端访问。

例如,要使用调试器调试名为 的文件,您可以简单地使用标志script.js调用 node,如下所示:debug

$ node debug script.js
< debugger listening on port 5858
connecting... ok
debug>

断点

现在您已经启动了一个调试会话,您调用的脚本中的任何位置都debugger 将成为调试器的断点。 

因此,例如,让我们在 script.js 中添加一个调试器语句:

foo = 2;
setTimeout(() => {
  debugger;
  console.log('bugger');
}, 1000);
console.log('de');

现在,如果我们运行这个脚本,调试器将在我们的断点处被调用,我们可以通过使用contornext命令(c或n简称)来控制脚本控制。

我们可以通过使用随时暂停脚本执行p。

$ node debug script.js
< debugger listening on port 5858
connecting... ok
break in /home/tom/web/envatodebug/myscript.js:1
  1 foo = 5;
  2 setTimeout(() => {
  3   debugger;
debug> cont
< de
break in /home/tom/web/envatodebug/myscript.js:3
  1 foo = 5;
  2 setTimeout(() => {
  3   debugger;
  4   console.log('bugger');
  5 }, 1000);
debug> next
break in /home/tom/web/envatodebug/myscript.js:4
  2 setTimeout(() => {
  3   debugger;
  4   console.log('bugger');
  5 }, 1000);
  6 console.log('de');
debug> next
< bugger
break in /home/tom/web/envatodebug/myscript.js:5
  3   debugger;
  4   console.log('bugger');
  5 }, 1000);
  6 console.log('de');
  7
debug> quit

REPL

$ node debug script.js
< debugger listening on port 5858
connecting... ok
debug> repl
Press Ctrl + C to leave debug repl
> foo
2
> 2+2
4

调试器的 Read-Eval-Print-Loop 允许您在执行期间以交互方式输入代码,从而在中断执行时访问应用程序及其所有变量和方法的状态。这是一个非常强大的工具,您可以使用它来快速清理您的应用程序。

通常,REPL 可作为独立的和作为调试器的一部分使用,它允许您以交互方式运行javascript 。例如,只需 node 在提示符处键入,不带任何选项,您将获得一个 REPL 接口,您可以在其中编写代码并查看输出。

进出

前面我提到了contand  next( cand n) 命令,它允许我们在到达断点后继续执行代码。除此之外,当我们遍历代码时,我们还可以单步执行方法或单步执行其父作用域

使用命令step进入和out退出,或s简称o。

回溯

使用backtrace或bt获取当前执行帧的回溯输出。

休息艺术

使用restart或从执行开始r重新启动脚本。

连接到调试器的替代方法

高级用户也可以通过使用 --debug 命令行标志启动 Node.js 来访问调试器,或者通过使用 SIGUSR1.

一旦以这种方式将进程设置为调试模式,就可以使用 Node.js 调试器连接到它,方法是使用 pid 正在运行的进程或通过 URI 引用(例如localhost:port)来连接***调试器:

  • node debug -p <pid> 通过 连接到进程 pid。

  • node debug <URI> 通过 URI 连接到进程,例如localhost:5858.

使用节点检查器

除了 CLI 调试工具,Node Inspector还在 Web 浏览器内部提供了 GUI 检查器(目前仅支持 chrome 和 Opera)。

要使用调试器,只需按如下方式安装:

npm install -g node-inspector

现在我们已经安装了 Node 检查器,我们可以使用以下命令调试我们的 script.js:

node-debug script.js

您的 shell 现在将输出以下内容,如果您在开发操作系统上将 Chrome 或 Opera 设置为默认设置,则可能会打开 Web 浏览器到该 URL。

Node Inspector is now available from https://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858 
Debugging `script.js`  

Debugger listening on port 5858

在您的 Web 浏览器中,您现在可以在与开发人员工具包类似的环境中调试您的应用程序。设置断点和查看代码现在与您的浏览器视图集成。享受!

结论

调试不需要是一场噩梦,也不需要有压力。 


文章目录
  • 使用调试器
    • 断点
    • REPL
    • 进出
    • 回溯
    • 休息艺术
    • 连接到调试器的替代方法
    • 使用节点检查器
  • 结论