调试器
\Debugger
\Stability: 2 - Stable
Node.js 包含了一个命令行的调试实用工具。Node.js 调试器客户端不是功能齐全的调试器,但可以进行简单的步进和检查。
\Node.js includes a command-line debugging utility. The Node.js debugger client is not a full-featured debugger, but simple stepping and inspection are possible.
要使用它,则使用 inspect 参数启动 Node.js,后跟要调试的脚本的路径。
\To use it, start Node.js with the inspect argument followed by the path to the
script to debug.
$ node inspect myscript.js
< Debugger listening on ws://127.0.0.1:9229/621111f9-ffcb-4e82-b718-48a145fa5db8
< For help, see: https://nodejs.cn/docs/inspector
<
connecting to 127.0.0.1:9229 ... ok
< Debugger attached.
<
ok
Break on start in myscript.js:2
1 // myscript.js
> 2 global.x = 5;
3 setTimeout(() => {
4 debugger;
debug> 调试器自动在第一个可执行行中断。要改为运行到第一个断点(由 debugger 语句指定),则将 NODE_INSPECT_RESUME_ON_START 环境变量设置为 1。
\The debugger automatically breaks on the first executable line. To instead
run until the first breakpoint (specified by a debugger statement), set
the NODE_INSPECT_RESUME_ON_START environment variable to 1.
$ cat myscript.js
// myscript.js
global.x = 5;
setTimeout(() => {
debugger;
console.log('world');
}, 1000);
console.log('hello');
$ NODE_INSPECT_RESUME_ON_START=1 node inspect myscript.js
< Debugger listening on ws://127.0.0.1:9229/f1ed133e-7876-495b-83ae-c32c6fc319c2
< For help, see: https://nodejs.cn/docs/inspector
<
connecting to 127.0.0.1:9229 ... ok
< Debugger attached.
<
< hello
<
break in myscript.js:4
2 global.x = 5;
3 setTimeout(() => {
> 4 debugger;
5 console.log('world');
6 }, 1000);
debug> next
break in myscript.js:5
3 setTimeout(() => {
4 debugger;
> 5 console.log('world');
6 }, 1000);
7 console.log('hello');
debug> repl
Press Ctrl+C to leave debug repl
> x
5
> 2 + 2
4
debug> next
< world
<
break in myscript.js:6
4 debugger;
5 console.log('world');
> 6 }, 1000);
7 console.log('hello');
8
debug> .exit
$ repl 命令允许远程评估代码。next 命令步进下一行。键入 help 以查看可用的其他命令。
\The repl command allows code to be evaluated remotely. The next command
steps to the next line. Type help to see what other commands are available.
在不输入命令的情况下按 enter 将重复之前的调试器命令。
\Pressing enter without typing a command will repeat the previous debugger
command.