Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I debug Node.js applications?

How do I debug a Node.js server application?

Right now I'm mostly using alert debugging with print statements like this:

sys.puts(sys.inspect(someVariable)); 

There must be a better way to debug. I know that Google Chrome has a command-line debugger. Is this debugger available for Node.js as well?

like image 546
Fabian Jakobs Avatar asked Dec 15 '09 22:12

Fabian Jakobs


People also ask

Which tools can be used to debug Node JS application?

js Debugger. Node. js provides built-in non-graphic debugging tool that can be used on all platforms. It provides different commands for debugging Node.

How do I debug a running node?

The V8 debugger can be enabled and accessed either by starting Node with the --debug command-line flag or by signaling an existing Node process with SIGUSR1. Then run node-inspector and browse to the URL it indicates.

How do I debug node js code in production?

Remote debugging and debugging remote machine. Live edit of running code, optionally persisting changes back to the file-system. Set breakpoints in files that are not loaded into V8 yet - useful for debugging module loading/initialization. Embeddable in other applications - see Embedding HOWTO for more details.


2 Answers

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 
like image 143
daralthus Avatar answered Sep 25 '22 21:09

daralthus


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
like image 27
balupton Avatar answered Sep 22 '22 21:09

balupton