Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot set breakpoint inside function when using require inside closure

Using node-inspector, I'm unable to set breakpoint in the following node.js code. (Content of main.js)

(function() {
    require('underscore');

    var doSomething = function(callback) {
        callback('doSomething Finished');
    }

    doSomething(function(x) {
       console.log(x);
    });

}).call(this);

I can easily set a breakpoint on line 2, line 4 or line 8, however no matter how hard I try the debugger won't let me set a break point on line 5 or line 9. To be clear, I'm using the following commands to run node-inspector

node --debug-brk main.js
node-inspector

I also tried to debug in web storm, however the issue persists. If I remove the line require('underscore');, then the problem immediately goes away and I'm able to set break point inside function body again. The problem also goes away if I remove the outermost closure function. It seems that the interaction between require and file level closure is screwing up the node debugging functionality. Has anyone experienced this problem themselves and / or knows any workarounds to be able to break inside function body?

EDIT: My node js version

Tony:~ $ node --version
v0.10.12
Tony:~ $ 
like image 260
Tony Avatar asked Jul 18 '13 08:07

Tony


People also ask

Can we put breakpoint inside ISR?

Yes - in an emulator.

How do you set a breakpoint within your code?

It's easy to set a breakpoint in Python code to i.e. inspect the contents of variables at a given line. Add import pdb; pdb. set_trace() at the corresponding line in the Python code and execute it. The execution will stop at the breakpoint.

Where should a breakpoint be set?

You can set a breakpoint on any line of executable code. For example, in the following C# code, you could set a breakpoint on the line of code with the variable assignment ( int testInt = 1 ), the for loop, or any code inside the for loop.


1 Answers

I ran exactly into the same issue with the same setup.

I've added a breakpoint after the definition of the target-function (that was the only place i could actually add a breakpoint). When the debugger reached that breakpoint and the function was actually defined, i was able to add breakpoints to the actual target-function...

like image 177
Tim Avatar answered Sep 22 '22 02:09

Tim