Node.js 的 V8 检查器集成


【V8 inspector integration for Node.js】

V8 Inspector 集成允许将 Chrome DevTools 附加到 Node.js 实例以进行调试和分析。它使用 Chrome 开发者工具协议

【V8 Inspector integration allows attaching Chrome DevTools to Node.js instances for debugging and profiling. It uses the Chrome DevTools Protocol.】

可以通过在启动 Node.js 应用时传递 --inspect 标志来启用 V8 Inspector。也可以通过该标志指定自定义端口,例如 --inspect=9222 将在端口 9222 上接受 DevTools 连接。

【V8 Inspector can be enabled by passing the --inspect flag when starting a Node.js application. It is also possible to supply a custom port with that flag, e.g. --inspect=9222 will accept DevTools connections on port 9222.】

使用 --inspect 标志会在调试器连接之前立即执行代码。这意味着代码会在你开始调试之前就开始运行,如果你想从一开始就进行调试,这可能不太理想。

【Using the --inspect flag will execute the code immediately before debugger is connected. This means that the code will start running before you can start debugging, which might not be ideal if you want to debug from the very beginning.】

在这种情况下,你有两种选择:

【In such cases, you have two alternatives:】

  1. --inspect-wait 标志:这个标志会在执行代码前等待调试器附加。这使你可以从执行开始就进行调试。
  2. --inspect-brk 标志:与 --inspect 不同,这个标志会在调试器附加后立即在代码的第一行中断。这在你希望从一开始就逐步调试代码,而不在调试前执行任何代码时非常有用。

因此,在决定使用 --inspect--inspect-wait 还是 --inspect-brk 时,需要考虑你是希望代码立即开始执行、在执行前等待调试器附加,还是在第一行就中断以进行逐步调试。

【So, when deciding between --inspect, --inspect-wait, and --inspect-brk, consider whether you want the code to start executing immediately, wait for debugger to be attached before execution, or break on the first line for step-by-step debugging.】

$ node --inspect index.js
Debugger listening on ws://127.0.0.1:9229/dc9010dd-f8b8-4ac5-a510-c1a114ec7d29
For help, see: https://nodejs.cn/docs/inspector 

(在上面的示例中,URL 末尾的 UUID dc9010dd-f8b8-4ac5-a510-c1a114ec7d29 是动态生成的,在不同的调试会话中会有所不同。)

如果 Chrome 浏览器版本低于 66.0.3345.0,请在上述 URL 中使用 inspector.html 而不是 js_app.html

【If the Chrome browser is older than 66.0.3345.0, use inspector.html instead of js_app.html in the above URL.】

Chrome 开发者工具尚不支持调试 工作线程。可以使用 ndb 来调试它们。

【Chrome DevTools doesn't support debugging worker threads yet. ndb can be used to debug them.】