Nodejs coredump 文件用什么分析

发布于 1周前 作者 sinazl 来自 nodejs/Nestjs

Nodejs coredump 文件用什么分析

线上有一些 node 生成的 coredump 文件,大小为 1.6G

所以大神们是用什么工具分析在线上分析这些 coredump 文件的

我想要的信息是:

  • 哪个进程产生的 coredump
  • 哪些对象导致内存溢出了
6 回复

C 用 gdb , nodejs 的我不清楚

有一个很慌的事情是,我现在不知道生成的那些 core.xxx 的 1.6G 的文件是 heapdump 还是 coredump

> 哪个进程产生的 coredump

这个问题我解决了,用file命令就能看

core.xxx 是 coredump ,一般那个 xxx 里含有 pid ,取决于你的 core pattern 怎么定义的。

可以用 gdb 看或者 lldb 看, bt 能看到启动命令和线程,需要加载对应的 node 二进制才能看到详细的 C++的堆栈(否则只能看到 mangled 过的名字)。 V8 的情况( JS 堆栈和堆上对象统计一类的东西)可以用 mdb_v8 或者 llnode 看到,因为是 JIT 编译的,不用这些插件读不了 JS 引擎里的东西。

针对Node.js的coredump文件分析,通常可以使用以下几种工具:

  1. LLDB与llnode

    LLDB是LLVM的调试器,而llnode是一个为LLDB提供JavaScript和Node.js特定调试功能的插件。通过llnode,你可以更方便地检查JavaScript堆栈、对象、源代码等。

    安装llnode后,你可以在LLDB中使用如下命令来分析coredump文件:

    lldb node <coredump文件路径>
    

    然后在LLDB中使用llnode提供的命令,如v8 bt(回溯Node函数及其参数)、v8 source list(查看源代码)等。

  2. GDB

    GNU调试器GDB是查看coredump文件的经典工具。你可以使用GDB加载coredump文件和对应的可执行文件,然后使用bt命令查看函数调用栈信息。

    gdb <程序名> <coredump文件路径>
    bt
    
  3. 其他工具

    除了LLDB和GDB,你还可以使用如Crash(针对内核崩溃)、Valgrind(主要用于内存检查,但也可用于分析coredump)等工具。

    需要注意的是,分析coredump文件可能需要大量的磁盘空间和计算资源,特别是在处理大型Node.js应用时。同时,coredump文件可能包含敏感信息,因此在处理时需要格外小心,确保遵守相关法律法规并保护用户隐私。

回到顶部