借助 Coredump 调试 nodejs


Core Dump,是操作系统提供的调试辅助操作,包含 内存分配信息program counter 以及 堆栈指针 等关键信息。

自动记录:
  • ulimit -c unlimited 打开内核限制 // 每个都是上 G 的大文件,注意磁盘占用
  • node --abort-on-uncaught-exception 来对出现未捕获的异常时也进行自动 Core dump

手动记录:调用 gcore 的方式来手动生成

lldb 分析:
  • $ lldb node -c core. # lldb -- node .js
  • (lldb) bt
  • (lldb) v8 bt # 得到 js 堆栈
  • (lldb) v8 p 0x0000034b9a6fa859 # v8 i