WebAssembly 与 Rust 编程系列02 WebAssembly 调试工具的安装及使用
About: 简介
工欲善其事, 必先利其器;
上一节WebAssembly 与 Rust 编程系列01 WebAssembly 是什么
我们讲了 WebAssembly
的一些基本概念, 讲到了WebAssembly
一个重要的目标就是:
可读,可调式
实现这一目标的基础,就是要配置好相关的工具,这里最基本的就是 wabt
wabt-github
本篇文章主要介绍
wabt
的特性wabt
的编译安装wabt
的简单使用
wabt
的特性
wabt
包含了一系列针对 WebAssembly
的工具, 包括以下:
- wat2wasm:
WebAssembly
文本格式转换成二进制格式 - wasm2wat:
wat2wasm
的逆过程,把二进制格式转换成文本格式 - wasm-objdump: 输出二进制格式文件的相关信息,类似于
objdump
. - wasm-interp: 终端运行二进制格式文件
- wasm-decompile: 二进制格式文件转换为 类C语法文本格式文件
- wat-desugar: 把文本格式文件转换为指定的解析器二进制文件,包括
s-expressions
,flat syntax
, 或者两者混合 - wasm2c: 转换二进制格式文件为C源文件和头文件
- wasm-strip: 移除二进制文件中
sections
相关代码 - wasm-validate: 校验二进制文件
- wast2json: 转换二进制文件为Json文件
- wasm-opcodecnt: 输出结构中
opcode
的使用数量 - spectest-interp: 读取指定json文件并在解释器中运行
wabt
的编译安装
wabt
可以直接使用github仓库中 release 预编译好的版本, 当然选择本地编译也是相当简单的
下载源码
git clone --recursive https://github.com/WebAssembly/wabt
cd wabt
安装Cmake
E:\WebAssembly\austin_demo>cmake --version
cmake version 3.14.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
查看当前系统支持的平台
cmake --help
Generators
The following generators are available on this platform (* marks default):
Visual Studio 16 2019 = Generates Visual Studio 2019 project files.
Use -A option to specify architecture.
* Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
Optional [arch] can be "Win64" or "ARM".
Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
Optional [arch] can be "Win64" or "IA64".
Visual Studio 9 2008 [arch] = Generates Visual Studio 2008 project files.
Optional [arch] can be "Win64" or "IA64".
编译
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=DBUG -DCMAKE_INSTALL_PREFIX=..\ -G "Visual Studio 15 2017"
cmake --build . --config DEBUG --target install
编译后输出:
添加到环境变量
把 wabt/bin 相应的路径加到系统环境变量
使用示例
- 转换文本格式为wasm
wat2wasm test.wat -o test.wasm
- 逆向
wasm2wat test.wasm -o test.wat
- 在终端运行
wasm-interp test.wasm
文本格式转换为wasm
下面这段代码,定义了相加函数,并进行了导出
(module
(func $add (param $lhs i32) (param $rhs i32) (result i32)
(i32.add
(get_local $lhs)
(get_local $rhs)
)
)
(export "add" (func $add))
)
现在可以运用上面的wat2wasm
把文本文件转换为 .wasm二进制文件
wat2wasm add.wat -o add.wasm
查看二进制文件信息
wasm-objdump add.wasm -x