调试Node.js

阅读 1.3k
标签: Node.js

在开发Node.js应用时,常常需要对其进行调试,调试的方式有多种,本篇介绍一种常用的:即在Chrome浏览器中进行调试。

原理

我们先来看看原理,V8提供的调试功能是基于TCP协议的,因此Node.js可以轻松地实现远程调试,在启动后,将开启一个Node调试进程,客户端(Chrome浏览器)通过连接它来实现彼此通信,它们之间是通过websocket来通信的,其原理图如下:


快速上手

话不多说,直接上手试试,比如,我想要看看Buffer这个全局对象上有哪些方法。

先创建一个debug.js文件,内容如下:

const { Buffer } = require('buffer')

console.dir(Buffer)

然后,在控制台执行命令:

node --inspect-brk debug.js

会出现如下信息:

Debugger listening on ws://127.0.0.1:9229/4fa5d640-b2f8-4091-b383-885fbd828e42

这说明一个 Node.js 进程(Debugger)正在websocket协议的9929端口上进行侦听,在 Chrome浏览器中,按下f12,打开开发者工具,点击如下图标:


Chrome就会自动连接到这个Debugger进程,在Chrome的Sources面板中,将自动在第一行上打上断点:


这个面板大家都很熟悉了吧,右边的调试按钮可以很方便的查看和调试,当执行完Buffer的打印语句后,就可以在Console面板中发现打印的数据了。

关于调试按钮,最常用的有三个:

  • 最左边的是 resume script execution (F8)
  • 第二位的是 step over next function call(F10)
  • 最右边的是 step(F9),一行一行地执行

    注意:如果Chrome没有识别,地址栏中输入:chrome://inspect,勾选Discover network targets选项即可:


    参考

    Debugging Guide

    最后编辑于: 2022-06-29

    评论(0条)

    (必填)
    复制成功