Throw Me a Lifebuoy: Debugging Node.js in Production with Diagnostic Reports
summary
Node.js can emit a large JSON diagnostic report (often ~25–28K) that captures header, JS and native stacks, heap, libuv/event-loop state and env; it’s available behind an experimental flag, triggerable on crash or by signal, and reveals things like a missing feature (rimraf recursive landed in 12.10) that stack traces miss. report-toolkit parses these files to redact secrets, run an inspect step (built-in long timeout rule detects stray timers), produce focused diffs, and emit stack-hash counts for aggregation.
AI-written summary · about
chapters (34)
- 0:00Introduction
- 0:28Who am I
- 1:14Process Crash
- 1:26Stack Trace
- 1:47Delete temp directory
- 2:04Error not empty
- 2:33Diagnostic Report
- 4:06Experimental Report
- 4:36Troubleshooting
- 5:33JS Stack
- 5:50Native Stack
- 6:03libuv
- 6:33user limits
- 7:08Nodejs version
- 7:38Leaked environment
- 8:19Deleting secrets
- 8:36Multitool
- 9:12Redact
- 9:50Replace
- 10:25Zombie Process
- 10:55Diagnostic Reports
- 11:42Create Diagnostic Report
- 12:00Event Loop
- 12:41Inspect Sub Command
- 14:05Output
- 15:07F flaky process
- 15:33Diff tool
- 17:33Count exceptions
- 18:37Script Report Toolkit
- 19:51Customization
- 20:43Summary
- 21:28Documentation
- 21:53IBM Project
- 22:15Christopher Hiller
related talks
25mNode js applications diagnostics under the hood
50mPost-Mortem Debugging in Node.js
16mNode.js Diagnostic Best Practices
57mTroubleshooting Node.js Applications Under the Hood
28mDiagnostic Tooling - Be Ready when Things Go Wrong in Production
50mDebugging Node.js in Production
31mConsole.loggers Anonymous: A Debugging Roadmap from Local to Production
21mFoundations of Debugging Node.js
