How do I debug Node.js applications?

node-inspector could save the day! Use it from any browser supporting WebSocket. Breakpoints, profiler, livecoding, etc... It is really awesome.

Install it with:

npm install -g node-inspector

Then run:

node-debug app.js

Debugging

  • Joyent's Guide
  • Debugger
  • Node Inspector
  • Visual Studio Code
  • Cloud9
  • Brackets

Profiling

  1. node --prof ./app.js
  2. node --prof-process ./the-generated-log-file

Heapdumps

  • node-heapdump with Chrome Developer Tools

Flamegraphs

  • 0x
  • jam3/devtool then Chrome Developer Tools Flame Charts
  • Dtrace and StackVis — Only supported on SmartOS
  • clinicjs

Tracing

  • Interactive Stack Traces with TraceGL

Logging

Libraries that output debugging information

  • Caterpillar
  • Tracer
  • scribbles

Libraries that enhance stack trace information

  • Longjohn

Benchmarking

  • Apache Bench: ab -n 100000 -c 1 http://127.0.0.1:9778/
  • wrk

Other

  • Trace
  • Vantage
  • Bugger
  • Google Tracing Framework
  • Paul Irish's Guide

Legacy

These use to work but are no longer maintained or no longer applicable to modern node versions.

  • https://github.com/bnoordhuis/node-profiler - replaced by built-in debugging
  • https://github.com/c4milo/node-webkit-agent - replaced by node inspector
  • https://nodetime.com/ - defunct

The V8 debugger released as part of the Google Chrome Developer Tools can be used to debug Node.js scripts. A detailed explanation of how this works can be found in the Node.js GitHub wiki.