使用节点

时间:2018-12-05 10:01:01

标签: node.js debugging webassembly

是否可以通过节点调试wasm模块?

我正在使用vscode并使用emcc -g4 --source-map-base进行编译。将断点放在C源文件中无效。尽管可以通过Chrome的常规网页调试wasm模块,但尝试通过Chrome用node inspectnode --inspect进行调试也不允许我使用断点。

我正在使用nodejs v10.13。

2 个答案:

答案 0 :(得分:1)

enter image description here

Firefox开发人员版(在屏幕截图中)和Chrome 71支持WebAssembly源地图。

您忘记的是,其中包括到源映射的路径。例如:

emcc -g4 --source-map-base http://localhost:8000/

使用此选项,每个源文件路径都以http://localhost:8000/为前缀。因此,将其替换为您的源目录。

答案 1 :(得分:0)

因此,我设法使某些工作正常进行。我安装了:

  • 节点v11.4
  • Chrome beta 71(由于this

并使用node --inspect启动了节点进程,用于附加Chrome DevTools。

此外,在我的代码中,我没有一枪做一次WebAssembly.instantiate(直接提供位码),而是分两个步骤进行:首先WebAssembly.compile,然后是WebAssembly.instantiate。一旦compile被执行,DevTools中就会提供一些“ wasm”源。这是wast文本格式的WebAssembly,可以在instantiate执行断点之前设置断点。

但是您不能从原始的C源文件进行调试,Chrome DevTools仅显示反编译的wast。感觉就像是调试的艰难时期,但是仍然可以进行调试。