You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取WebAssembly(Wasm)程序崩溃时的栈追踪信息?

WebAssembly场景下获取崩溃栈与核心转储方案

前置配置修正

  • 首先开启Chrome DevTools的Wasm原生调试支持:打开DevTools右上角设置面板,进入Experiments标签,勾选WebAssembly Debugging: Enable DWARF support,重启DevTools后生效,未开启该选项时只会显示JS层调用栈。
  • 补充编译参数,原有编译命令基础上新增调试相关标识:
em++ -g4 crash.cpp -o crash.html --source-map-base http://localhost:8080/ \
  -sASSERTIONS=2 \
  -sDEMANGLE_SUPPORT=1 \
  -sEXCEPTION_DEBUG=1 \
  -sABORT_ON_UNCAUGHT_EXCEPTIONS=1

以上参数会让程序崩溃时自动在控制台输出解码后的C++层级栈追踪,包含代码行号信息。

核心转储(等价gdb --core)实现方案

WebAssembly生态下对应core dump的格式为minidump,按以下步骤操作即可生成并解析:

  1. 新增编译参数-sENABLE_MINIDUMP=1重新编译程序
  2. 程序崩溃时会自动生成minidump格式的转储文件
  3. 使用Emscripten SDK内置的wasm-minidump-stackwalk工具解析转储文件,即可得到崩溃时的完整调用栈、寄存器状态、内存上下文,和gdb加载core文件的调试效果完全一致。

更便捷的本地调试方案

无需依赖浏览器,直接编译为Node.js可运行版本即可快速定位崩溃:

  1. 调整编译输出目标为JS文件:
em++ -g4 crash.cpp -o crash.js
  1. 直接用Node.js运行:
node crash.js

运行后终端会直接输出带精确代码行号的C++栈追踪,无需额外配置。你当前使用的Emscripten 2.0.12版本完全支持上述所有功能,无需升级工具链。

内容的提问来源于stack exchange,提问作者codenoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:09:02