Node.js 命令行调试器 node debug 使用详解

作者:星河

时间:2026-10-23

浏览:97

本文详细介绍 Node.js 内置命令行调试器的使用方法。通过 node debug 命令启动调试会话,涵盖 cont、next、step、out 等执行控制指令,以及 watch、setBreakpoint、list、backtrace 等状态查看与断点管理功能,帮助开发者高效排查脚本错误。

文章目录

启动 Node.js 调试器

在命令行环境中,可以通过执行 "node debug" 命令来激活 Node.js 内置的调试器。具体操作代码如下:

node debug <需要被执行的脚本文件名> 接下来,我们将通过一个具体的实例来演示完整的调试流程:

首先,创建一个名为 app.js 的文件用于后续的调试操作:


console.log('hello,word')
function foo(){
 console.log('hello,foo')
 return 100;
}
var bar = 'This is a pen';
var http = require('http')
var i = foo();
console.log(i)

调试器连接与状态确认

1 在命令行窗口执行“node debug”指令,输出结果如下所示:


[root@kuber2 webproject]# node debug app.js
< Debugger listening on [::]:5858
connecting to 127.0.0.1:5858 ... ok
break in app.js:1
> 1 console.log('hello,word')
 2 function foo(){
 3 console.log('hello,foo')
debug> 

Node.js 提供了一个基于简单 TCP 协议的调试器,允许用户通过命令行进行交互。成功进入调试模式后,系统会首先建立连接。如上图所示,当输出显示 "Debugger" 并跟随 "ok" 时,表明调试器已成功启动。提示信息 "break in app.js:1" 表示脚本执行已暂停在第 1 行。

代码执行控制指令

2. 若要继续执行剩余代码,可输入 "cont" 或简写 "c"。执行结果如下所示:


[root@kuber2 webproject]# node debug app.js
< Debugger listening on [::]:5858
connecting to 127.0.0.1:5858 ... ok
break in app.js:1
> 1 console.log('hello,word')
 2 function foo(){
 3 console.log('hello,foo')
debug> c
< hello,word
< hello,foo
< 100

3. 如果无需执行完所有剩余代码,可输入 "next" 或简写 "n",使程序执行到下一行可执行代码之前暂停。结果如下所示:


[root@kuber2 webproject]# node debug app.js
< Debugger listening on [::]:5858
connecting to 127.0.0.1:5858 ... ok
break in app.js:1
> 1 console.log('hello,word')
 2 function foo(){
 3 console.log('hello,foo')
debug> n
< hello,word
break in app.js:6
 4 return 100;
 5 }
> 6 var bar = 'This is a pen';
 7 var http = require('http')
 8 var i = foo();
debug> 

4. 若需进入函数内部进行详细调试,可在函数调用处输入命令 "step" 或简写 "s",从而进入函数体。如图所示:


break in app.js:8
 6 var bar = 'This is a pen';
 7 var http = require('http')
> 8 var i = foo();
 9 console.log(i)
 10 
debug> s
break in app.js:3
 1 console.log('hello,word')
 2 function foo(){
> 3 console.log('hello,foo')
 4 return 100;
 5 }
debug>

5. 在函数体内,可以使用 "n" 逐步单步调试。此外,还可以输入 "out" 或简写 "o",该命令会立即执行完函数内剩余的所有代码,并使程序暂停在被调用函数返回后的下一行代码之前。如图所示:


break in app.js:3
 1 console.log('hello,word')
 2 function foo(){
> 3 console.log('hello,foo')
 4 return 100;
 5 }
debug> n
< hello,foo
break in app.js:4
 2 function foo(){
 3 console.log('hello,foo')
> 4 return 100;
 5 }
 6 var bar = 'This is a pen';
debug> o
break in app.js:9
 7 var http = require('http')
 8 var i = foo();
> 9 console.log(i)
 10 
 11 });
debug>

变量监控与断点管理

6. 利用 "watch" 命令可以观察变量或表达式的当前值,使用 "unwatch" 则可以取消对特定变量的监控。具体应用代码如下所示:


break in app.js:1
> 1 console.log('hello,word')
 2 function foo(){
 3 console.log('hello,foo')
debug> watch("i")
debug> watch("i==100")
debug> n
< hello,word
break in app.js:6
Watchers:
 0: i = undefined
 1: i==100 = false

 4 return 100;
 5 }
> 6 var bar = 'This is a pen';
 7 var http = require('http')
 8 var i = foo();
debug> n
break in app.js:7
Watchers:
 0: i = undefined
 1: i==100 = false

 5 }
 6 var bar = 'This is a pen';
> 7 var http = require('http')
 8 var i = foo();
 9 console.log(i)
debug> n
break in app.js:8
Watchers:
 0: i = undefined
 1: i==100 = false

 6 var bar = 'This is a pen';
 7 var http = require('http')
> 8 var i = foo();
 9 console.log(i)
 10 
debug> n
< hello,foo
break in app.js:9
Watchers:
 0: i = 100
 1: i==100 = true

 7 var http = require('http')
 8 var i = foo();
> 9 console.log(i)
 10 
 11 });
debug> unwatch("i")
debug> unwatch("i==100")
debug> n
< 100
break in app.js:11
 9 console.log(i)
 10 
>11 });
debug>

7. 可以使用 "setBreakpoint(filename, line)" 或简写 "cb(filename, line)" 来设置断点。其中,第一个参数指定要设置断点的文件名,若省略则默认为当前正在运行的文件;第二个参数 "line" 指定需要添加断点的行号。同样,可以使用 "clearBreakPoint(filename, line)" 或简写 "cb(filename, line)" 来取消已设置的断点。

其他调试辅助命令

8. 使用 "list(n)" 命令可以显示当前调试语句前后各 n 行的代码内容。

9. 使用 "repl" 命令可以退出当前的 debug 模式,进入交互式 REPL 环境。

10. 使用 "restart" 命令可以重新开始对当前脚本的调试会话。

11. 使用 "kill" 命令可以终止当前脚本文件的调试进程。

12. 在利用 "kill" 终止当前调试会话后,可以使用 "run" 命令重新启动脚本进行调试。

13. 利用 "backtrace" 或简写 "bt" 可以返回并查看当前代码运行所处的调用栈位置。

14. 利用 "scripts" 命令可以查看所有当前被加载的模块名称列表。

以上即为基于 Node.js 调试器的详细使用指南,希望能对读者有所帮助,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章