Welcome to the Linux Foundation Forum!

Breakpoint set with 'debugger' is ignored when using node --inspect

I'm encountering an issue with replicating the example provided in the "Adding a Breakpoint in Code" section of Chapter 4, "Debugging and Diagnostics".

Here is the relevant code from app.js:

function f(n = 99) {
if (n === 0) throw Error();
debugger;
f(n - 1);
}
f();

When I attempt to start app.js in Inspect mode using the --inspect flag (as opposed to --inspect-brk), I encounter the following output:

node --inspect app.js

Debugger listening on ws://127.0.0.1:9229/abdb9645-121f-4c70-a79d-3266273c9fb8
For help, see: https://nodejs.org/en/docs/inspector
/home/jumbo/dev/app.js:2
if (n === 0) throw Error();
^

Error
at f (/home/jumbo/dev/app.js:2:22)
at f (/home/jumbo/dev/app.js:4:3)
at f (/home/jumbo/dev/app.js:4:3)
at f (/home/jumbo/dev/app.js:4:3)
at f (/home/jumbo/dev/app.js:4:3)
at f (/home/jumbo/dev/app.js:4:3)
at f (/home/jumbo/dev/app.js:4:3)
at f (/home/jumbo/dev/app.js:4:3)
at f (/home/jumbo/dev/app.js:4:3)
at f (/home/jumbo/dev/app.js:4:3)

Node.js v20.12.0

This output indicates that the breakpoint set using 'debugger' is not being recognized as expected when using node --inspect.

Seeking guidance on proper use of 'debugger' breakpoints.

Thanks in advance,

-Itai

Answers

  • xdxmxc
    xdxmxc Posts: 157

    @itaid that is as expected, the code is specifically written to demonstrate the need for --inspect-brk

  • itaid
    itaid Posts: 11

    No it's not.

    Copied directly from the course page:

    Adding a Breakpoint in Code

    In some scenarios it can be easier to set a breakpoint directly in the code, instead of via the Devtools UI.

    The debugger statement can be used to explicitly pause on the line that the statement appears when debugging.

    Let's edit app.js to include a debugger statement on line 3:

    function f (n = 99) {
    if (n === 0) throw Error()
    debugger
    f(n - 1)
    }
    f()

    This time, start app.js in Inspect mode, that is with the --inspect flag instead of the -inspect-brk flag. Once Chrome Devtools is connected to the inspector, the "Sources" tab of Devtools will show that the application is paused on line 3:

  • akaiurin
    akaiurin Posts: 8

    @xdxmxc said:
    @itaid that is as expected, the code is specifically written to demonstrate the need for --inspect-brk

    Previously, in some topic earlier, you answered that this is some sort of a bug in node.js and you gonna specify this somewhere. But now you said opposite, that this is expected behavior. Lection contains that it should work in same way both. Maybe this lection/lab should be reformulated to do not contain confusion, controversial point with practical lab?

  • xdxmxc
    xdxmxc Posts: 157

    @akalikuli there was a bug in one of the node versions at one point, not sure how what you're saying is related

    @itaid apologies you are right, I misread - it's because a debugger needs to be attached before debugger statements are honoured, this works:

    require('inspector').waitForDebugger()
    function f(n = 99) {
      if (n === 0) throw Error();
      debugger;
      f(n - 1);
    }
    f()
    

    this is some errata to update in the chapter also - thanks

  • tonihoo
    tonihoo Posts: 3

    @xdxmxc Thanks, attaching the debugger first solves this (node v20.13.1). I hope this will be fixed in the course materials soon.

Categories

Upcoming Training