如何调试 Node.js 应用程序?

IT技术 javascript node.js debugging google-chrome-devtools
2021-01-31 23:44:46

如何调试 Node.js 服务器应用程序?

现在我主要使用带有打印语句的警报调试,如下所示:

sys.puts(sys.inspect(someVariable));

一定有更好的调试方法。我知道谷歌浏览器有一个命令行调试器。这个调试器也可用于 Node.js 吗?

6个回答

节点检查员可以节省一天!从任何支持WebSocket 的浏览器中使用它断点、分析器、实时编码等……真是太棒了。

安装它:

npm install -g node-inspector

然后运行:

node-debug app.js
对我来说不幸的是,node-inspector 不适用于最新版本的 Node.js,并且自 v0.1 以来它不支持登录到浏览器控制台。node-codein 只是有问题。因此,我编写了自己的module,通过允许您将对象等转储到您的 Web 浏览器控制台来帮助调试。我认为它可能对其他人有用:node-monkey此外,它适用于 Firefox 和 Chrome。
2021-03-10 23:44:46
Wish 节点检查器处于活动状态。分析组件需要得到一些爱。
2021-03-13 23:44:46
既然这是一个如此惊人和流行的工具,那么原作者承认他们不再拥有维护它的资源的事实肯定不会成为问题,因为开源社区可以选择它吗?
2021-03-13 23:44:46
现在检查器现在由 StrongLoop 积极维护,并再次使用最新版本 (0.3) 耶!公告在此:blog.strongloop.com/...
2021-03-14 23:44:46
“从 6.3 版本开始,Node.js 提供了一个基于 DevTools 的内置调试器,该调试器主要弃用 Node Inspector,请参阅例如这篇博文以开始使用。内置调试器由 V8/Chromium 团队直接开发,并提供了某些高级难以在 Node Inspector 中实现的功能(例如长/异步堆栈跟踪)。” - 说节点检查器回购
2021-03-16 23:44:46

调试

剖析

  1. node --prof ./app.js
  2. node --prof-process ./the-generated-log-file

堆转储

火焰图

追踪

日志记录

输出调试信息的库

增强堆栈跟踪信息的库

基准测试

其他

inheritance

这些曾经可以工作,但不再维护或不再适用于现代节点版本。

npm install -g profiler 抱怨在 Windows 7 上缺少 python。我试图设置 python=C:\Python34\,但这会导致崩溃。
2021-03-18 23:44:46
关于 Nodetime:对于那些不想将数据发送到 nodetime 服务器的人来说,有一个本地“替代方案”(它仍然基于 nodetime),该lookmodule,正如stackoverflow.com/questions/12864221/nodejs-memory 中所指出的那样-剖析
2021-03-20 23:44:46
我没有发现 nodetime 的 CPU 报告很有帮助: 1. 我只是得到一棵方法树,没有“自我”时间。2. 似乎树枝被修剪到低于一定数量的百分比。这两个使得很难理解 cpu 大部分时间花在哪里。
2021-03-22 23:44:46
唯一对我有用的分析器是nprof+ v8.logfrom node --prof
2021-04-02 23:44:46
唯一开箱即用的分析器是 nodetime。但是它的 cpu 分析堆栈跟踪是不可用的(它没有提供足够的细节)。Nodejs 工具 4 msvc 2012 也有分析器,但它也报告了严重的未修复错误...
2021-04-03 23:44:46

作为 Google Chrome Developer Tools 的一部分发布V8调试器可用于调试 Node.js 脚本。可以在Node.js GitHub wiki 中找到有关其工作原理的详细说明

+1 对我来说效果很好。在 Mac OS X 上使用全新的 Eclipse 3.x、x64 版本。安装说明也写得很好。谢谢你。
2021-03-25 23:44:46
我很感兴趣,在 Paul Irish 和 Pavel 在 Google IO 上的演讲之后,现在是否可以直接将 node.js 调试到 Chrome 开发人员工具而无需 Eclipse?
2021-04-02 23:44:46
也包含在 Nodeclipse nodeclipse.org 中(修复了一些与 Node.js 相关的错误)
2021-04-02 23:44:46
我进入这个领域的是 trepanjs ( npmjs.com/package/trepanjs )。它具有节点调试器的所有优点,但更符合 gdb。它还具有更多功能和命令,例如语法突出显示、更广泛的在线帮助和更智能的评估。请参阅github.com/rocky/trepanjs/wiki/Cool-things了解其一些很酷的功能。
2021-04-07 23:44:46
该功能目前在夜间版本中可用。在此处查看说明:https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27#.fitvuaumt
2021-04-08 23:44:46

从 6.3 版开始,Node 有自己的内置GUI 调试器(使用 Chrome 的 DevTools)

节点内置 GUI 调试器

只需传递检查员标志,您就会获得检查员的 URL:

node --inspect server.js

您也可以通过传递在第一行中断--inspect-brk

@JaridR.Margolin 不错。我更新了答案以使用它。设置更容易,效果更好:)
2021-03-18 23:44:46
你从哪里得到 chrome 开发者工具的黑暗主题?
2021-03-27 23:44:46
如果它对任何人有帮助,我在youtu.be/rtZKUnks6jI 上发布了一个解释这个过程的视频
2021-03-30 23:44:46
不是要贬低上述步骤,而只是为了分享......我试图创建一个稍微更健壮且更易于安装的包装器。参见:github.com/jaridmargolin/inspect-process
2021-04-05 23:44:46
这个答案目前位于底部,它是唯一真正对我有用的答案。这翻转真棒!
2021-04-08 23:44:46

Node.js 0.3.4+ 版本具有内置的调试支持。

node debug script.js

手册:http : //nodejs.org/api/debugger.html

你如何让程序真正运行?“r -> app is already running...”,当我尝试继续并遇到试图获取输入的语句时,它会将我退回到调试提示,而不是让我输入所需的输入。
2021-03-24 23:44:46
我没有任何文档。刚刚更新到 v0.3.5。放一行“调试器”;在您的代码中,它将充当断点。它的工作原理类似于 ndb/gdb。执行“节点调试脚本.js”后,输入帮助。你会看到它支持的命令。p = 打印,l = 列表...所以你不需要输入整个世界
2021-03-26 23:44:46
您可能必须更改--debugdebug不带破折号。这就是我最终让它工作的方式。令人困惑的是--debugdebug做两件不同的事情。
2021-03-27 23:44:46
请注意,在 Windows 下它是“node.exe --debug myscript.js”,但它仍然不起作用。
2021-04-02 23:44:46
你有任何关于如何使用它的文档的链接吗?
2021-04-05 23:44:46