调试器(Debugger)

稳定度:2 - 稳定

Node.js 包含一个可以有效地通过 TCP 协议 访问的完整的进程外的全功能调试工具并内置调试客户端。在启动 Node.js 后,通过 debug 参数加上需要调试的脚本文件路径的方式使用,在调试器成功启动后会有明显的提示:

$ node debug myscript.js
< debugger listening on port 5858
connecting... ok
break in /home/indutny/Code/git/indutny/myscript.js:1
  1 x = 5;
  2 setTimeout(() => {
  3   debugger;
debug>

Node.js 的调试器客户端虽然目前还没法支持全部命令,但可以进行一些简单的(调试)步骤和检测(命令)。

在脚本的源代码中插入一个 debugger; 声明就可以在当前位置的代码中设置一个断点。

例如,假设 myscript.js 是这么写的:

// myscript.js
x = 5;
setTimeout(() => {
    debugger;
    console.log('world');
}, 1000);
console.log('hello');

一旦运行调试器,将在第4行发生断点:

// myscript.js
x = 5;
setTimeout(() => {
  debugger;
  console.log('world');
}, 1000);
console.log('hello');
Once the debugger is run, a breakpoint will occur at line 4:

$ node debug myscript.js
< debugger listening on port 5858
connecting... ok
break in /home/indutny/Code/git/indutny/myscript.js:1
  1 x = 5;
  2 setTimeout(() => {
  3   debugger;
debug> cont
< hello
break in /home/indutny/Code/git/indutny/myscript.js:3
  1 x = 5;
  2 setTimeout(() => {
  3   debugger;
  4   console.log('world');
  5 }, 1000);
debug> next
break in /home/indutny/Code/git/indutny/myscript.js:4
  2 setTimeout(() => {
  3   debugger;
  4   console.log('world');
  5 }, 1000);
  6 console.log('hello');
debug> repl
Press Ctrl + C to leave debug repl
> x
5
> 2+2
4
debug> next
< world
break in /home/indutny/Code/git/indutny/myscript.js:5
  3   debugger;
  4   console.log('world');
  5 }, 1000);
  6 console.log('hello');
  7
debug> quit

repl 命令允许代码被远程评估。next 命令用于跳转到下一行。键入 help 可以查看其他的有效命令。

results matching ""

    No results matching ""