ubuntu下如何调试js代码
在Ubuntu下调试JavaScript,后端通过Node.js的`--inspect`标志配合ChromeDevTools或VSCode内置调试器进行断点;前端使用浏览器DevTools或HeadlessChrome远程调试;并利用日志工具与系统命令(如journalctl)排查环境问题。
在 Ubuntu 环境下调试 Ja vaScript,其实方法比想象中要丰富,关键看你是在后端、浏览器,还是日志层面解决问题。这次我们一次性把常用的调试手段过一遍。

一、Node.js 后端调试
开发后端应用,最核心的工具就是 Node.js 自带的调试协议。配合 Chrome DevTools 或 VS Code,完全可以像调试前端一样,断点、单步、观察表达式,一个都不少。具体怎么操作?
快速上手步骤
1. 启动调试会话
- 普通启动:
node --inspect app.js - 首行暂停:
node --inspect-brk app.js(如果想让程序一启动就停在入口,用这个参数更直接)
2. 用 Chrome DevTools 查看
- 打开
chrome://inspect,在 Remote Target 下找到你的 Node 进程,点击 inspect 即可进入 DevTools。 - 如果想直接在源码上打断点,可以把项目目录添加为 Workspace——这样 DevTools 就能理解你的文件结构了。
另外,直接在代码里写一句 debugger;,运行到那里就会自动中断,非常方便。
3. 用 VS Code
- 在“运行与调试”面板创建
launch.json,选 Node.js 环境。一个简单的配置示例:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/app.js"
},
{
"type": "node",
"request": "attach",
"name": "Attach to Process",
"port": 9229
}
]
}
一些实用补充
- 调试已运行的进程:先用
node --inspect启动,然后在 VS Code 选择 Attach to Process,连接到 9229 端口即可。 - 无界面环境:可以用 Headless Chrome 远程调试。比如启动
google-chrome --headless --remote-debugging-port=9222,然后访问http://127.0.0.1:9222,就能看到可以检查的页面列表了。
二、前端浏览器调试
浏览器调试是最直观的。在本机或服务器上直接用 Chrome/Chromium,按下 F12 或右键“检查”,就能打开 DevTools。操作其实就三板斧:在 Console 里看报错,在 Sources 里设断点,在 Network 里检查请求和响应。
那如果是无界面服务器或远程环境呢?启动 Headless Chrome 并开启远程调试端口(比如 9222),在本地 DevTools 中通过 http://127.0.0.1:9222 来检查页面。另一种思路是用 Qt WebEngine 集成调试接口。
三、日志与系统层面的辅助排查
很多时候,真正的问题并不在代码逻辑里,而是在运行环境上。这时候日志和系统信息就派上用场了。
- 应用日志:除了常见的
console.log和console.error,还可以用winston、pino等日志库输出结构化日志。实时查看日志可以用tail -f /path/to.log。 - 系统与服务日志:如果 Node.js 作为服务运行,用
journalctl -u your-service-name -f跟踪服务日志。同时检查/var/log/或应用目录下的日志文件。 - 运行环境:用
top或htop看 CPU/内存,用df -h或du -sh检查磁盘空间,再确认依赖与环境变量是否正确配置。
四、常见问题与快速排查
实际调试中总会碰到一些“卡住”的情况,这里列几个最常见的:
- 看不到 Node 进程:确认是以
--inspect启动,且端口 9229 未被占用。必要时用--inspect-brk确保首行即暂停。 - 断点不生效:在 VS Code 里确认项目根目录已添加为 Workspace,且 Sources 面板中的文件与磁盘文件建立了映射关系。
- 远程/容器场景:确保调试端口(如 9229)已开放并正确映射。Headless 场景下使用
--remote-debugging-port=9222,并在http://127.0.0.1:9222检查页面。 - 无界面服务器:优先使用 Headless Chrome 远程调试。如果是持续集成,建议结合日志采集与错误追踪系统(比如 Sentry),完善可观测性。


































