如何使用节点检查器正确调试node.js?

Tot*_*.js 39 debugging node.js

我有一个内置node.js的应用程序,我使用节点检查器进行调试.但由于这个原因,这很难:

  1. 重新启动服务器后,我的断点永远不会保存
  2. 我不能在尚未加载的文件上放置断点; 所以我必须从第一个脚本进入我想要的脚本; 非常痛苦!

你如何使用节点检查器真正调试node.js?

有关如何使用node.js的视频非常具有误导性,因为一切都在模块中...
http://www.youtube.com/watch?v=AOnK3NVnxL8

或者这个脚本已经加载到第一个脚本中
http://www.youtube.com/watch?v=HJOH0-g8f6E&feature=mfu_in_order&list=UL

编辑:

没有人能回答这个问题?:■

Jau*_*uco 26

在javascript中,您可以使用该debugger;语句设置断点.但是,如果实际连接了调试器,它们将仅暂停节点.

所以使用启动节点脚本

node --debug-brk myfile.js
Run Code Online (Sandbox Code Playgroud)

然后启动node-inspector并按下播放按钮继续到下一个断点,它将debugger;到达你的断点(至少那对我有用)

(如评论中所述:在最近版本的节点中,您不再需要单独安装node-inspector.如果使用启动节点,node --debug-brk --inspect myfile.js则会获得一个在浏览器中启动调试器的URL).

重启后仍然需要额外点击一次,但至少保存了断点.

如果你的断点没有被自动命中,但只有在用户采取一些操作后你--debug-brk当然不需要.


mts*_*tsr 6

客户端断点的问题在于,当文件更改时很难跟踪断点位置.与编辑器不同,它无法跟踪被更改的行等.

@RyanOlds建议使用调试器; 语句也是一个很好的语句,但是在评估语句之前必须确保调试器已连接,否则会被忽略.从--debug-brk开始是一种强制执行此操作的好方法,因为执行在第一行暂停,允许您附加调试器然后继续执行.

您可以尝试使用节点的内部调试器进行调试.

编辑:但是,根据v8 DebuggerProtocol,可以在尚未加载的脚本上设置断点,并且可以按功能,脚本等设置断点.因此,节点检查器应该可以跟踪您的断点(在会话中或其他任何情况).但是现在它没有这样做.

也许如果v8允许某段代码触发断点,类似于节点调试器?编辑:确实如此,您应该能够通过抛出任何旧的异常(捕获或未捕获)来触发中断.

  • 实际上,我曾经放置调试器; 语句和v8确实按预期打破了它们. (2认同)

ale*_*hro 5

节点检查器的新版本(0.3.x)将断点保存在浏览器的本地存储中并自动恢复它们.

https://github.com/node-inspector/node-inspector/pull/116