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

How to PROPERLY debug node.js with node inspector?

我有一个内置node.js的应用程序,我使用node inspector进行调试。但这很难做到:

  • 重新启动服务器后,不会保存断点
  • 我不能在尚未加载的文件上放置断点;所以我必须从第一个脚本跳到我想要的脚本;真的很痛苦!
  • 如何使用节点检查器真正调试node.js?

    有关如何使用node.js的视频非常误导,因为所有内容都包含在模块中…http://www.youtube.com/watch?V= AONK3NVNXL8

    或者脚本显示的这个脚本已经加载到第一个脚本中http://www.youtube.com/watch?v=hjoh0-g8f6e&feature=mfu_排序&list=ul

    编辑:

    没人能回答这个问题?的S


    在javascript中,可以使用debugger;语句设置断点。但是,只有在实际附加了调试器的情况下,它们才会暂停节点。

    因此,使用启动节点脚本

    1
    node --debug-brk myfile.js

    然后启动node inspector并按下play按钮继续到下一个断点,它将击中你的debugger;断点(至少对我的ATM有效)。

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

    重新启动后,您仍然需要再单击一次,但至少保存了断点。

    如果您的断点不是自动命中的,但是只有在一些用户操作之后,您才不需要--debug-brk


    客户端断点的问题是,当文件更改时,很难跟踪断点的位置。与编辑器不同,它不能跟踪正在更改的行等。

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

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

    编辑:但是,根据V8 DebuggerProtocol,可以在尚未加载的脚本上设置断点,并且可以按函数、脚本等设置断点。因此,节点检查器应该可以(在会话中)跟踪断点。不过,现在还不行。

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


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

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


    您可以使用节点编码进行检查。它不会执行运行时断点,但应该简化检查过程。

    网址:https://github.com/ketamynx/node-codein/


    尝试使用intellij webstorm——这是一个免费的试用版,许可证的价格也不贵得离谱。它允许您在启动自己的内部节点进程之前在所有文件中保存断点,并在进程重新启动时记住它们。

    我同意-节点检查器看起来很出色,但是非常没用,除非你的应用程序有一个明确的地方来设置一个断点在顶级脚本就在你的源文件加载之后,但在你到达你想要调试的区域之前。您可以用这种方式构建自己的代码,但是对于您想要包含的其他有用的库,您不会那么幸运。也。。。为什么调试工具应该指定您的项目结构?

    忘记断点是非常无用的…我的大多数调试运行都需要不止一次演练,就像在其他人的代码中一样,很容易跨过你想要的地方。


    这是内置的,包括保存断点。我刚在节点7.3.0中测试过它。

    node --inspect --debug-brk app.js

    这会像这样打印一个URL

    To start debugging, open the following URL in Chrome:
    chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/c3d5d93e-9d27-41b9-a4da-607e43c9d4f8

    把它放在铬合金里,你就可以走了。

    如果要跳过复制/粘贴URL,请执行以下操作:

    npm install -g inspect-process
    inspect --debug-brk app.js

    不幸的是,inspect-process方法没有保留断点:-(。

    我拍了一段视频:https://youtu.be/rtzkunks6ji


    也值得注意。vscode有一个很好的节点调试器。

    https://code.VisualStudio.com/

    在Mac、Linux和Windows上提供。

    它执行运行时断点(不需要编写调试器;语句),支持变量监视,甚至有一个调用堆栈窗口(非常好)。

    一切都是如此自动化,它现在是我使用nodejs时超越崇高文本(我喜欢崇高)。