Bird
Raised Fist0
Node.jsframework~10 mins

Node.js built-in debugger in Node.js - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Node.js built-in debugger
Start Node.js with --inspect
Debugger listens on port
Connect debugger client
Set breakpoints
Run code until breakpoint
Pause execution
Inspect variables & call stack
Step through code (step in/out/over)
Resume or stop debugging
This flow shows how Node.js debugger starts, listens, connects, pauses, inspects, steps, and resumes code execution.
Execution Sample
Node.js
node --inspect-brk app.js
// In debugger client:
break app.js:5
cont
next
repl
Starts Node.js with debugger, sets breakpoint at line 5, continues, steps next, and opens REPL for inspection.
Execution Table
StepDebugger ActionCode Execution StateVariables StateOutput/Effect
1Start Node.js with --inspect-brkExecution paused before first lineNo variables initializedDebugger listening on ws://127.0.0.1:9229/uuid
2Connect debugger clientPaused at first lineNo variables initializedClient connected, ready to send commands
3Set breakpoint at app.js:5Breakpoint setNo variables initializedBreakpoint registered at line 5
4Continue execution (cont)Runs until line 5Variables initialized up to line 4Execution paused at breakpoint line 5
5Inspect variablesPaused at line 5Variables visible with current valuesVariables shown in debugger UI
6Step over (next)Executes line 5, pauses at line 6Variables updated if changedExecution paused at line 6
7Open REPLPaused at line 6Variables accessibleUser can evaluate expressions interactively
8Resume executionRuns to end or next breakpointVariables update as code runsProgram continues running
9Exit debuggerProgram runs normallyVariables as per program endDebugger detached
💡 Debugger session ends when user detaches or program finishes execution
Variable Tracker
VariableStartAfter Step 4After Step 6Final
countundefined3410
messageundefined'start''processing''done'
Key Moments - 3 Insights
Why does the program pause immediately when using --inspect-brk?
Because --inspect-brk tells Node.js to pause execution before running any code, allowing you to set breakpoints before the program starts (see execution_table step 1).
How can I see the current value of a variable while paused?
Use the debugger's inspect or REPL commands to evaluate variables at the paused line, as shown in execution_table steps 5 and 7.
What is the difference between 'next' and 'cont' commands?
'cont' continues running until the next breakpoint or program end, while 'next' steps over the current line and pauses at the next line (see steps 4 and 6).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step does the debugger pause at the user-set breakpoint?
AStep 6
BStep 2
CStep 4
DStep 1
💡 Hint
Check the 'Code Execution State' column for when execution pauses at line 5.
According to variable_tracker, what is the value of 'count' after step 6?
A3
B4
Cundefined
D10
💡 Hint
Look at the 'After Step 6' column for variable 'count'.
If you remove the --inspect-brk flag, what changes in the execution flow?
AProgram runs immediately until breakpoint
BProgram pauses before first line
CDebugger does not listen on any port
DCannot set breakpoints
💡 Hint
Compare step 1 description about --inspect-brk pausing before first line.
Concept Snapshot
Node.js built-in debugger:
- Start with 'node --inspect' or '--inspect-brk' to enable debugging
- Connect debugger client (Chrome DevTools, VSCode)
- Set breakpoints to pause execution
- Use 'cont' to continue, 'next' to step over lines
- Inspect variables and call stack while paused
- Use REPL for interactive evaluation
- Resume or detach to end debugging
Full Transcript
The Node.js built-in debugger allows you to pause and inspect your code while it runs. You start Node.js with the --inspect or --inspect-brk flag. The --inspect-brk flag pauses execution before the first line, letting you set breakpoints early. Then you connect a debugger client like Chrome DevTools or VSCode. You set breakpoints where you want the program to pause. When the program hits a breakpoint, it pauses, letting you inspect variables and the call stack. You can step through code line by line using commands like 'next' or continue running with 'cont'. The REPL lets you run commands and check variable values interactively. When done, you resume or detach the debugger to let the program finish normally.

Practice

(1/5)
1. What is the primary purpose of the Node.js built-in debugger?
easy
A. To pause and inspect code execution to find bugs
B. To speed up the execution of Node.js programs
C. To automatically fix syntax errors in code
D. To deploy Node.js applications to the cloud

Solution

  1. Step 1: Understand the debugger's role

    The Node.js built-in debugger allows developers to pause code execution and inspect variables and flow.
  2. Step 2: Compare options to debugger purpose

    Only To pause and inspect code execution to find bugs describes pausing and inspecting code to find bugs, which matches the debugger's function.
  3. Final Answer:

    To pause and inspect code execution to find bugs -> Option A
  4. Quick Check:

    Debugger purpose = pause and inspect [OK]
Hint: Debugger = pause and inspect code to find bugs [OK]
Common Mistakes:
  • Thinking debugger speeds up code
  • Confusing debugger with auto-fix tools
  • Assuming debugger deploys apps
2. Which command correctly starts the Node.js built-in debugger for a script named app.js?
easy
A. node debug app.js
B. node run app.js
C. node inspect app.js
D. node start app.js

Solution

  1. Step 1: Recall debugger start commands

    The modern way to start the Node.js debugger is using node inspect followed by the script name.
  2. Step 2: Check each option

    node inspect app.js uses node inspect app.js, which is correct. node debug app.js uses deprecated node debug. Options B and D are invalid commands.
  3. Final Answer:

    node inspect app.js -> Option C
  4. Quick Check:

    Start debugger = node inspect [OK]
Hint: Use 'node inspect' to start debugger, not 'node debug' [OK]
Common Mistakes:
  • Using 'node debug' which is deprecated
  • Using 'node run' or 'node start' which don't start debugger
  • Confusing command syntax order
3. Given this code snippet with debugger statements:
function add(a, b) {
  debugger;
  return a + b;
}

console.log(add(2, 3));

What happens when you run node inspect script.js on this file?
medium
A. The program runs without pausing and prints 5 immediately
B. The program crashes with an exception
C. SyntaxError occurs due to debugger statement
D. Execution pauses at the debugger line before returning the sum

Solution

  1. Step 1: Understand debugger statement effect

    The debugger; statement causes the debugger to pause execution at that line when running under a debugger.
  2. Step 2: Analyze program flow

    Running node inspect pauses at the debugger; line inside add before returning the sum, allowing inspection.
  3. Final Answer:

    Execution pauses at the debugger line before returning the sum -> Option D
  4. Quick Check:

    Debugger statement pauses execution under debugger [OK]
Hint: Debugger statement pauses code only when debugger runs [OK]
Common Mistakes:
  • Thinking debugger statement causes syntax error
  • Assuming program runs without pause under debugger
  • Confusing debugger statement with console.log
4. You run node inspect app.js but the debugger does not pause at your debugger; statement inside a function. What is a likely cause?
medium
A. The debugger command is misspelled
B. You forgot to save the file after adding the debugger statement
C. Node.js version does not support debugger
D. Debugger statements only work in browser JavaScript

Solution

  1. Step 1: Check file changes

    If the file was not saved after adding debugger;, the running code won't include it, so debugger won't pause.
  2. Step 2: Evaluate other options

    Debugger command spelling doesn't affect pause at debugger;. Node.js supports debugger in recent versions. Debugger statements work in Node.js, not only browsers.
  3. Final Answer:

    You forgot to save the file after adding the debugger statement -> Option B
  4. Quick Check:

    Unsaved file = debugger ignored [OK]
Hint: Always save files before debugging to include changes [OK]
Common Mistakes:
  • Assuming debugger statements only work in browsers
  • Ignoring file save before running debugger
  • Blaming Node.js version without checking
5. You want to debug a Node.js script and step through each line inside a loop. Which command should you use after starting node inspect script.js to move to the next line without entering functions?
hard
A. next
B. cont
C. step
D. out

Solution

  1. Step 1: Understand debugger commands

    cont continues running until next breakpoint, step enters functions, next moves to next line without entering functions, out steps out of current function.
  2. Step 2: Choose command for stepping through loop lines

    To move line by line in the current function (like inside a loop) without entering called functions, next is the correct command.
  3. Final Answer:

    next -> Option A
  4. Quick Check:

    Step over lines = next [OK]
Hint: Use 'next' to step over lines without entering functions [OK]
Common Mistakes:
  • Using 'cont' which runs without pausing
  • Using 'step' which enters functions
  • Using 'out' which exits current function