WebAssembly 调试时怎么查看内存变化?
我在用 WebAssembly 写一个图像处理模块,想调试内存里像素数据的变化,但 Chrome DevTools 里的 Memory 面板看不到 wasm 线性内存的具体内容,有啥办法能实时观察内存值吗?
试过在 JS 里用 instance.exports.memory.buffer 打印,但每次都要手动写代码刷新,效率太低。有没有类似 C++ 调试器那种 watch 内存地址的功能?
顺便贴一下我用来测试的样式代码:
.canvas-container {
border: 1px solid #ccc;
width: 512px;
height: 512px;
image-rendering: pixelated;
}
最省事的是装个叫 Wasm Memory Inspector 的扩展(GitHub 上有开源,搜一下就能找到),装完后在 DevTools 里会多一个叫 Wasm Memory 的面板,能直接看到
instance.exports.memory的原始 buffer,支持按字节/短整/浮点数查看,还能设置 watch 地址。如果不想装扩展,自己写个临时调试工具也很快,比如在 JS 里加个定时器:
或者更狠一点,直接把内存映射成 ImageData 画到 canvas 上看实时变化(适合图像处理场景):
再配上你贴的
.canvas-container样式,直接就能肉眼观察像素变化了,比干看内存 dump 高效多了。