如果我使用 gcore 对 Node.js 进程进行代码转储,那么分析它的最佳工具是什么?
灵感来自: Tool for analyzing java core dump
在我的具体情况下,我有兴趣调查一些内存泄漏,所以我真的很想得到一些堆分析。通用工具甚至仪器包和技术也受到欢迎。我发现 Node.js 非常有趣,但是运行时分析工具还没有。
最佳答案
为了调查崩溃,我发现 node-segfault-handler成为无价之宝。这是我编写的一个模块,用于在带有信号的硬崩溃事件中获取 native 代码堆栈跟踪 - 例如,导致 SIGSEGV 的 NULL 的 deref
为了调查内存/分配问题,以下是我迄今为止收集的一些数据:
1) Blog post by Dave Patheco - 作者谈到使用 MDB 插件来获取 JS 堆栈等。遗憾的是,据我所知,该插件的源代码从未发布(也没有任何二进制形式)。
2) Postmortem Debugging in Dynamic Environments - ACM 队列文章也由 Dave Patheco 撰写(链接自博客文章)。虽然它有助于很好地阅读背景资料,但这篇文章中并没有很多具体的工具和技术。
3) node-panic - 一个纯 JS 工具,用于在断言失败类型崩溃的情况下转储状态。无助于调试源自 native 代码错误(SIGSEGV 等)的崩溃
4) Joyent: Debugging Production Systems - Bryan Cantrill 谈论他推荐的工具和技术(感谢 crickeys)。
关于node.js - 从 Node.js 分析核心转储的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704331/