Debugging 如何使用node inspector正确调试node.js?

Debugging 如何使用node inspector正确调试node.js?,debugging,node.js,Debugging,Node.js,我在node.js中内置了一个应用程序,我使用node inspector进行调试。 但这很难,因为: 重新启动服务器后,我的断点永远不会保存 我无法在尚未加载的文件上设置断点;因此,我必须从第一个脚本进入到我想要的脚本;真痛苦 如何使用node inspector调试node.js 关于如何使用node.js的视频很容易误导人,因为所有内容都包含在一个模块中… 或者,出现的脚本已经加载到第一个脚本中 编辑: 没有人能回答这个问题客户端断点的问题是,当文件更改时,很难跟踪断点的位置。与编辑器

我在node.js中内置了一个应用程序,我使用node inspector进行调试。 但这很难,因为:

  • 重新启动服务器后,我的断点永远不会保存
  • 我无法在尚未加载的文件上设置断点;因此,我必须从第一个脚本进入到我想要的脚本;真痛苦 如何使用node inspector调试node.js

    关于如何使用node.js的视频很容易误导人,因为所有内容都包含在一个模块中…

    或者,出现的脚本已经加载到第一个脚本中

    编辑:
    没有人能回答这个问题客户端断点的问题是,当文件更改时,很难跟踪断点的位置。与编辑器不同,它无法跟踪正在更改的行等

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

    您可以尝试使用节点的进行调试

    编辑:但是,根据脚本,可以在尚未加载的脚本上设置断点,您可以按函数、脚本等设置断点。因此,node inspector应该可以跟踪断点(在会话中或其他任何情况下)。不过,它现在没有这样做

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

    尝试使用IntelliJ WebStorm-有一个免费的试用版,并且许可证并不昂贵。它允许您在启动自己的内部节点进程之前在所有文件中保存断点,并在进程重新启动时记住断点

    我同意-node inspector看起来很出色,但它是非常无用的,除非你的应用程序在源文件加载之后,但在你到达你想要调试的区域之前,有一个清晰的位置在顶级脚本中设置断点。您可以用这种方式构造自己的代码,但如果有其他想要包含的有用库,您就不会这么幸运了。也。。。为什么调试工具应该指定您的项目结构


    忘记断点是非常没有帮助的。。。我的大多数调试运行都需要不止一次的演练,就像在其他人的代码中一样,很容易跨过您想要的位置。

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


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

    因此,使用

    node --debug-brk myfile.js
    
    然后启动node inspector并按play按钮继续到下一个断点,它将命中
    调试器断点(至少对我有效)

    (如注释中所述:在node的最新版本中,您不再需要单独安装node inspector。如果使用
    node--debug brk--inspect myfile.js启动node,您将获得一个在浏览器中启动调试器的url)

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

    如果断点未自动命中,但仅在用户执行某些操作后,您当然不需要使用
    --debug brk

    node inspector的新版本(0.3.x)将断点保存在浏览器的本地存储中并自动恢复


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

    可在Mac、Linux和Windows上使用

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


    一切都是如此自动化,现在当我使用nodejs(我喜欢sublime)时,它是我对sublime文本的转到。

    这是现在内置的,包括保存断点。我刚刚在Node7.3.0中测试了它

    node--inspect--debug brk app.js

    这会像这样打印一个url

    要开始调试,请在Chrome中打开以下URL:
    铬-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/c3d5d93e-9d27-41b9-a4da-607e43c9d4f8

    把它放在铬上,你就可以走了

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

    npm安装-g检查过程
    检查--调试brk app.js
    

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


    这里是我制作的一个视频:

    1和2都是关于节点检查器的有效投诉。还有其他调试方法,插件到Eclipse或使用
    节点--debug
    加上使用
    调试器在代码中添加断点;
    。我尝试了Eclipse,但在尝试了一周多后放弃了。现在我遇到了Sublime Text 2,这真是一个错误我使用的东西比eclipse要好。我将搜索是否存在任何用于sublime的调试器text@Totty:您找到sublime的调试器了吗?没有,我仍然使用node inspector。速度非常慢,所以我尽可能使用console.log。node.js中的一个难点可能是指向内部调试器的handy链接的重复-我想知道我是怎么做的ng这样做。事实上,我曾经放置过调试器;语句,v8确实像预期的那样在它们上面中断。同事刚刚在这个答案中发现了我的名字。是否有可能Node.js在连接节点检查器之前已经通过了
    调试器;
    ?我很确定v8忽略了断点,并且
    调试器;
    ,除非连接了调试客户端。使用--debug-brk可能会更幸运,它会告诉V8中断