如果我使用 gcore 制作 Node.js 进程的代码转储,分析它的最佳工具是什么?
灵感来自:java core dump分析工具 https://stackoverflow.com/questions/951095/tool-for-analyzing-java-core-dump
在我的具体案例中,我有兴趣调查一些内存泄漏,所以我真的很想进行一些堆分析。通用工具甚至仪器包和技术也受到欢迎。我发现 Node.js 非常有趣,但运行时分析工具还不存在。
为了调查崩溃,我发现节点段错误处理程序 https://github.com/ddopson/node-segfault-handler是无价的。这是我编写的一个模块,用于在发生信号硬崩溃时获取本机代码堆栈跟踪 - 例如 NULL 的 deref 导致 SIGSEGV
为了调查内存/分配问题,以下是我迄今为止收集的一些数据:
1) Dave Patheco 的博客文章 http://dtrace.org/blogs/dap/2011/10/31/nodejs-v8-postmortem-debugging/- 作者谈论了使用 MDB 插件来获取 JS 堆栈等。可悲的是,据我所知,该插件的源代码从未发布(也没有任何二进制形式)。
2) 动态环境中的事后调试 http://queue.acm.org/detail.cfm?id=2039361- ACM Queue 文章也是由 Dave Patheco 撰写(链接自博客文章)。虽然它是很好的背景阅读材料,但这篇文章并没有提供很多具体的工具和技术。
3) 节点恐慌 https://github.com/joyent/node-panic- 一个纯 JS 工具,用于在发生断言失败类型崩溃时转储状态。对调试源自本机代码错误(SIGSEGV 等)的崩溃没有任何帮助
4) Joyent:调试生产系统 http://www.infoq.com/presentations/Debugging-Production-Systems- Bryan Cantrill 谈论他推荐的工具和技术(谢谢 crickeys)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)