node 出错 core 文件调试

调试目标

找到 core 文件中 JS 调用堆栈,从而结合代码找出致错原因

调试工具

  • 调试 node 程序问题导致的 core 文件,需要用到 lldb 和 llnode,llnode 是基于 lldb 的一个插件。lldb 是一个类似 gdb 的调试器,llnode 主要用于输出 js 调用栈信息。具体安装步骤请参考 https://github.com/nodejs/llnode。 
        tip: mac 上用 brew install 好一些
  • 由于 llnode 是基于 lldb 的一个插件,安装好了 lldb 和 llnode 之后,需要把 llnode 加载到 lldb 中,这样才能在命令行中使用 v8 命令(此步骤很重要)。
        如何加载 llnode 到 lldb 中请参考以上 github 库说明。

调试步骤

(1)lldb ***/bin/node -c ***/core.node.***.***
  • ***/bin/node 是 node 所在目录
  • ***/core.node.***.*** 是 core 文件
(2)plugin load ***/llnode/llnode.dylib
  • ***/llnode/llnode.dylib 是 llnode 所在目录,我在 mac 上的 /usr/local/opt/llnode/llnode.dylib
  • 这一步是为了加载 llnode 到 lldb 中,根据个人安装时对 plugin 的配置看是不是要执行。我用的是比较笨的办法,每次运行 lldb 都加载一次 llnode 插件,所以这里要执行一次此命令。
  • /usr/local/opt/llnode/llnode.dylib 是 llnode 所在目录。
(3)v8 bt 查看 core 文件中调用堆栈
(4)v8 i 0x0000******

        查看某一具体参数或函数信息,具体请参考 https://asciinema.org/a/29589

(5)结合代码和报错信息找到出错原因

猜你喜欢

转载自blog.csdn.net/u011848617/article/details/81022301