温馨提示×

Debian中Node.js的调试技巧有哪些

小樊
41
2025-11-23 00:12:39
栏目: 编程语言

Debian 下 Node.js 调试技巧

一 核心方法与快速上手

  • 使用 –inspect–inspect-brk 启动调试服务器,默认监听 9229 端口;前者在程序开始运行后等待调试器连接,后者在第一行暂停,便于从入口断点开始。示例:node --inspect app.jsnode --inspect-brk app.js。随后可在 Chrome DevToolschrome://inspect 页面连接,或在 VS Code 中通过“运行与调试”附加到调试端口。也可直接用命令行调试器 node inspect app.js 进行步进与断点控制。为便于复用,建议将启动方式写入 package.json 的 scripts(如 "debug": "node --inspect-brk app.js")。

二 开发期高效工作流

  • VS Code 创建 .vscode/launch.json,常用配置示例:
    • 直接启动:{ "type": "node", "request": "launch", "name": "Launch Program", "program": "${workspaceFolder}/app.js" }
    • 附加到已启动进程:{ "type": "node", "request": "attach", "name": "Attach", "port": 9229 }
    • 调试脚本命令:如 { "type": "node", "request": "launch", "name": "Debug Next.js", "skipFiles": ["<node_internals>/**"], "command": "npm run dev" } 结合 nodemon 做热重载调试,可在 nodemon.json 中配置 "exec": "node --inspect-brk src/your-script.js",保存即自动重启并进入调试。使用 debug 模块输出命名空间日志,通过环境变量按需开启:DEBUG=myapp:* node app.js,或细分到子模块 DEBUG=myapp:server,myapp:db node app.js,避免生产刷屏。

三 远程与容器场景

  • 远程调试时,在目标 Debian 主机启动 node --inspect-brk app.js,确保调试端口(默认 9229)对调试机可达(如开放防火墙/安全组)。在本地 VS Code 使用 attach 配置并填写远程 address(如 "address": "192.0.2.10")即可连接;也可在 Chrome DevToolsConnection 页添加远程地址进行连接。若代码运行在容器内,需将 9229 端口映射到宿主机,并在 DevTools/VS Code 中使用宿主机地址连接。

四 生产问题定位与事后分析

  • 使用 日志级别 与结构化日志库(如 PinoWinston)替代散乱的 console.log,便于在不同环境控制输出并集中采集。对偶发崩溃,可启用 核心转储(core dump),配合 llnode 进行事后分析,查看 JavaScript 堆栈原生层对象 的映射关系。注意仅在必要时开启,避免性能与磁盘压力。

五 常见问题与排查清单

  • 无法在 chrome://inspect 看到目标:确认进程以 –inspect/–inspect-brk 启动、监听 9229、本机/远程网络可达;必要时在 DevTools 的 Connection 页手动添加地址。
  • 端口被占用:检查是否已有 Node 调试进程占用 9229lsof -iTCP:9229 -sTCP:LISTEN),结束旧进程或更换端口(如 --inspect=9230)。
  • 断点不生效:确认 VS Code 运行配置与文件路径匹配,且未排除源码(如使用 skipFiles 误伤);必要时使用 attach 模式连接正在运行的调试进程。
  • 远程/容器连不上:核对 IP/端口映射、防火墙与安全组策略,确保调试客户端能直连调试端口。

0