借助 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