SuperAPI AI 工具集

symbolicate-crash-dump

编程与开发

查看项目

更新于 10-16 00:32

技能介绍

用途:把 VS Code 原生崩溃转储(.dmp)转换为带方法名的可读回溯,借助 electron-minidump 完成符号化,用于定位崩溃根因。

主要能力:执行符号化并输出日志;识别缺失符号的模块;下载匹配的符号包;将 .sym 文件放入 electron-minidump 缓存;通过 dump 字符串判断崩溃所属模块与进程类型;对多个 dump 比对崩溃签名;无 dump 时可用 --crash-reporter-directory 生成;远程扩展宿主 Linux 崩溃可用 gdb 分析 core dump。

必要用法:

  • 前提:需要 *.dmp 文件,以及全局安装 electron-minidump:npm install -g electron-minidump。
  • 仅限 VS Code 团队成员;Insiders/Stable 符号位于私有仓库 microsoft/vscode-electron-prebuilt,需要已认证的 GitHub CLI。需在 macOS 或 Linux 运行,electron-minidump 不支持 Windows。
  • 初始符号化:electron-minidump crash-file.dmp > symbolicated-output.log
  • 网络失败可重试,已下载符号会缓存:for i in 1 2 3 4 5; do electron-minidump crash-file.dmp > symbolicated-output.log && break; sleep 3; done
  • 符号来源需按崩溃构建匹配:Insiders/Stable 用 microsoft/vscode-electron-prebuilt,Code - OSS 用 electron/electron 的公开 release。
  • 下载示例:gh release list --repo microsoft/vscode-electron-prebuilt;gh release download v42.5.0-14525058 --repo microsoft/vscode-electron-prebuilt --pattern "stable-symbols-v42.5.0-win32-x64.zip"
  • 缓存路径:"$(npm root -g)/electron-minidump/cache/breakpad_symbols";Breakpad 按 <module>.pdb/<debug-id>/<module>.sym 匹配,debug-id 必须完全一致。
  • 生成崩溃报告:关闭 VS Code 后运行 code --crash-reporter-directory <绝对路径>,复现崩溃后查找 *.dmp。
  • 远程扩展宿主 Linux 崩溃:先 ulimit -c unlimited,获取 core dump 后运行 gdb -se <vscode-server>/node -c <core>,并采集 set pagination off、info sharedlibrary、info registers、bt full、disassemble 的输出。

适用场景:VS Code 团队排查原生崩溃,尤其是扩展宿主、渲染进程、GPU 进程或主进程崩溃,并区分第三方注入模块导致的崩溃。

限制:仅限团队内部使用;Windows 不可运行 electron-minidump;符号按精确 debug-id 匹配,版本名不同无效;runtime.node 与第三方/系统模块常无公开符号,只能按模块名归因;崩溃构建与符号来源必须对应;Symbol 包只含少量第一方模块;.dmp 与日志为临时产物勿提交仓库。