Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do I fail to debug a nodejs app in Intellij IDEA 11?

I have a single process node.js application, which I wish to debug with Intellij IDEA 11 32 bits (node.js is 32 bits too).

So, I place an initial breakpoint and run. The debugger stops at the breakpoint, but then it refuses to do any of the following:

  • step into
  • go to another breakpoint
  • pause execution

When I step into, it seems just to run, without stepping through the code. Once running, it ignores any subsequent breakpoints and does not break when I press the pause button.

This issue drives me crazy. Any ideas on how should I troubleshoot it?

EDIT

More info. After IDEA breaks on the first breakpoint (the only successful time) I try to inspect the variables and am unable to see any. IDEA is stuck on "Collecting data..." The watch window does not work too.

EDIT2

Justed posted an issue to their bug tracking system - http://youtrack.jetbrains.com/issue/IDEA-112925

like image 724
mark Avatar asked Aug 30 '13 09:08

mark


1 Answers

I've been noticing that IntelliJ's node.js debugger kinda sucks. It's death by 1000 cuts. I love IntelliJ to death, its such a nice IDE. But for node, the debugger has a million different scenarios where breakpoints don't work properly, and another million where it doesn't properly give you access to the in-scope variable values, and another million where it doesn't step properly...

I'm gonna hafta try looking for another tool..

UPDATE 2014-01-13: I've been using IntelliJ's debugger for a while now (having found no other good tool). It seems some of the problems with it are problems with node or v8 itself. Most of the problems I was having have either actually been solved by newer versions of IntelliJ, or by using this workaround:

1. create a file called proxyDebug.js

2. put the following content in it:

require('path/to/the/script/you/want/to/debug.js')

3. point your debugger to that file

Apparently the node.js debugging hooks go buggy at the entrypoint script, so by creating this proxy entrypoint that we don't care at all about, there won't be any weird bugs caused by that in the scripts you do care about. The bugs this workaround fixed were missed breakpoints, predefined variables (exports, module, process, etc) being inaccessible by the debugger, and one or two other things I can't remember.

like image 192
B T Avatar answered Oct 22 '22 16:10

B T