Diag WG Update - Many new tools, phasing out some old ones
In surveys and discussions with Node.js users we consistently hear of your need for better tools and APIs for debugging and understanding your modules and apps. In fact, in last year's Node.js Foundation survey, the biggest ask from developers and technical leads was for better tools.
Based on that feedback and thanks to contributions and collaboration from across our community, over the past year several experimental diagnostic APIs and tools have landed in Node itself and the Node.js Foundation, including:
- async_hooks for sharing context across async boundaries
- Inspector and node-inspect for stepping and profiling
- Trace Controller for gathering and streaming traces from V8 and Node
- node-report and llnode for post-mortem analysis
Over the coming months we'll continue to improve the stability of these projects and hope to eventually graduate some from experimental state with your help and feedback. Search the nodejs GitHub org for labels diag-agenda, tracing, and inspector and review issues in the Diagnostics WG to see what we're working on and how you can help.
With progress comes the need to phase out old implementations so we can focus on refining and completing new ones to meet user needs. In particular, as Inspector graduates from experimental status in the coming months, V8 and Node's legacy Debugger API will be deprecated and eventually removed in favor of the new Inspector API.
Considering the relative imminence of this change, we've decided to add a deprecation
warning as soon as possible to prepare users of the legacy interface. So beginning
in Node 7.7.0 running
node --debug (or variants like
--debug-port=12345) will print a deprecation warning to stderr. To avoid
this message, start node with the
For your future debugging needs, use
node --inspect or variants like
to activate the new Inspector API. Many popular editors and tools already
automatically support this API with Node.js 6 and later.
In addition, Node's built-in CLI debugger, typically invoked with
debug myscript.js, has now (7.6.0+) been augmented with an Inspector-based
equivalent invoked with
node inspect myscript.js.
node debug myscript.js will
eventually be removed as well in favor of
Check out the Debugging - Getting Started guide for help getting started
--inspect and Inspector.
As always, but particularly in this transition stage, we'd love your feedback both on the insights you need from the Node.js runtime and modules, as well as your experiences getting that info with tools and APIs old and new. Open an issue in the Diagnostics WG for discussions or a PR in nodejs/node to contribute code.