-
Notifications
You must be signed in to change notification settings - Fork 3
Resources
Sarah Lim edited this page Jul 16, 2018
·
6 revisions
- Nick's gist: original project description
- WebAssembly Debugging Capabilities: enumerates functional requirements and nice-to-haves for WASM debugging.
Thinking roughly about this section of the original gist:
As a nested log where a call introduces new indenting and a return removes indenting. For example, show me the last N function calls that happened before this bug.
call crate::mod::func(123, 456) call crate::mod::helper(0) return 42 from crate::mod::helper call crate::mod::another() call util::blah(986, 345) return from util::blah return 1 from crate::mod::another
It seems like some of the following might be useful:
-
Building Rust with debug symbols to get the
crate::mod::func
andcrate::mod::another
, etc. annotations -
Binaryen's
LogExecution
pass, which appears to have a lot in common with LLVM passes (visitFunction
, the IR format, etc.)- Although after skimming this quickly, I'm not sure I'm completely clear on the approach used, particularly the
builder.makeCallImport
parts.
- Although after skimming this quickly, I'm not sure I'm completely clear on the approach used, particularly the
- If we decide to go with
parity-wasm
: example injection pass
-
WebAssembly Stack Model and this discussion
-
WebAssembly Reference for instructions
-
WasmFiddle and WasmExplorer for fast experimentation with C++
-
Advanced Tools for WebAssembly
Of particular note:
Using wasm2wast and wast2wasm together allows lossless round tripping of WebAssembly binaries, and provides developers with a convenient way to manipulate the content of WebAssembly binaries using external tools.