Stability: 2 - Stable
Starting the Debugger
To use it, start Node.js with theinspect argument followed by the path to the script to debug:
debugger statement), set the NODE_INSPECT_RESUME_ON_START environment variable to 1.
Debugger Commands
Typehelp to see available commands. Pressing enter without typing a command will repeat the previous debugger command.
Stepping
cont,c- Continue executionnext,n- Step nextstep,s- Step inout,o- Step outpause- Pause running code (like pause button in Developer Tools)
Breakpoints
setBreakpoint(),sb()- Set breakpoint on current linesetBreakpoint(line),sb(line)- Set breakpoint on specific linesetBreakpoint('fn()'),sb(...)- Set breakpoint on a first statement in function’s bodysetBreakpoint('script.js', 1),sb(...)- Set breakpoint on first line ofscript.jssetBreakpoint('script.js', 1, 'num < 4'),sb(...)- Set conditional breakpoint on first line ofscript.jsthat only breaks whennum < 4evaluates totrueclearBreakpoint('script.js', 1),cb(...)- Clear breakpoint inscript.json line 1
Information
backtrace,bt- Print backtrace of current execution framelist(5)- List scripts source code with 5 line context (5 lines before and after)watch(expr)- Add expression to watch listunwatch(expr)- Remove expression from watch listunwatch(index)- Remove expression at specific index from watch listwatchers- List all watchers and their values (automatically listed on each breakpoint)repl- Open debugger’s repl for evaluation in debugging script’s contextexec expr,p expr- Execute an expression in debugging script’s context and print its value
Execution Control
run- Run script (automatically runs on debugger’s start)restart- Restart scriptkill- Kill script
Various
scripts- List all loaded scriptsversion- Display V8’s version
Watchers
It is possible to watch expression and variable values while debugging. On every breakpoint, each expression from the watchers list will be evaluated in the current context and displayed immediately before the breakpoint’s source code listing. To begin watching an expression, typewatch('my_expression'). The command watchers will print the active watchers. To remove a watcher, type unwatch('my_expression').
Example Session
repl command allows code to be evaluated remotely. The next command steps to the next line.
Setting Breakpoints in Files Not Yet Loaded
It is possible to set a breakpoint in a file (module) that is not loaded yet:Conditional Breakpoints
It is possible to set a conditional breakpoint that only breaks when a given expression evaluates totrue:
V8 Inspector Integration
V8 Inspector integration allows attaching Chrome DevTools to Node.js instances for debugging and profiling. It uses the Chrome DevTools Protocol. V8 Inspector can be enabled by passing the--inspect flag when starting a Node.js application. It is also possible to supply a custom port with that flag, e.g. --inspect=9222 will accept DevTools connections on port 9222.
Inspector Flags
--inspect- Activate inspector onhost:port. Default is127.0.0.1:9229. The code will execute immediately before debugger is connected--inspect-wait- Wait for debugger to be attached before executing the code. This allows you to start debugging right from the beginning of the execution--inspect-brk- Break on the first line of the code as soon as debugger is attached. This is useful when you want to debug the code step by step from the very beginning
Example
Using Chrome DevTools
Once the inspector is enabled, you can connect Chrome DevTools:- Open Chrome browser
- Navigate to
chrome://inspect - Click “Configure…” and ensure your target host and port are listed
- Your Node.js application should appear under “Remote Target”
- Click “inspect” to open DevTools
- Breakpoint debugging
- Step through code execution
- Inspect variables and scope
- Console evaluation
- CPU and memory profiling
- Network inspection (with appropriate flags)