用于Node.js服务器故障调试的V8快照功能

时间:2019-04-25 16:40:07

标签: javascript node.js v8

我在Google上搜索了“ V8 mksnapshot”,发现V8引擎中有“快照”功能,也有this question here

在Node.js服务器出现故障的情况下,此功能似乎是错误再现的杰出功能。

场景

  • 您可以在Node.js服务器的某些错误处理程序中使用“ process.dumpAll”,或者按过程进行附加,或者以某种方式过滤错误事件。
  • 如果出现问题-所有V8状态都保存到转储文件中
  • 稍后,当您想重现该问题时,可以从此转储中重新运行Node.js
  • 与将调试器附加到Node.js相比,该过程将处于挂起状态-如果触发了“ debugger”,则相同,当前语句将是“ process.dumpAll”函数。
  • 现在您可以检查V8中每个对象的状态。

我想问

  • 在哪里可以找到关于V8快照的更好的文档(比在论坛上聊天更好)?
  • 您看到这种情况有什么陷阱吗?
  • 为Node.js实现函数“ process.dumpAll”和“ process.loadAll”应采取哪些第一步? (不包括有关编写Node.js扩展的知识)
  • 也许有人已经为此做出了解决方案?

1 个答案:

答案 0 :(得分:0)

V8的mksnapshot功能不是为事后调试而设计的(而是为启动加速而设计的),我怀疑它是否可以用于此目的。

Coredumps(用于崩溃的进程)和DevTools /堆快照(用于异常)很可能在调试时更有用。

Node.js postmortem debugging已有一些努力。也许只是知道正确的搜索引擎查询可以帮助您大致了解现有解决方案,其功能和局限性?