将 WebAssembly 二进制文件映射到它的源代码
Mapping WebAssembly binary to its source code
编译带有 -g
标志的 C/C++ 代码会在生成的二进制文件中产生调试信息。特别是,有一个源代码到二进制代码的映射:
add: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <add>:
int add(int a, int b) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 89 7d fc mov %edi,-0x4(%rbp)
7: 89 75 f8 mov %esi,-0x8(%rbp)
return a + b;
a: 8b 45 fc mov -0x4(%rbp),%eax
d: 03 45 f8 add -0x8(%rbp),%eax
10: 5d pop %rbp
11: c3 retq
用clang或emcc编译WebAssembly有类似的东西吗?
我用这些尝试了 -g
标志,但它没有相同的行为。
最后,我想要一个 .wat
代码到 C 代码的映射。
llvm-objdump -S
的工作方式应该与它对本机对象文件的工作方式相同。
如果您正在寻找缺少调试信息的代码的良好显示,您可能还想看看 wasm-decompile
,它是 wabt 项目的一部分。它能够比 normal/native 反编译器更好地使内容可读。
编译带有 -g
标志的 C/C++ 代码会在生成的二进制文件中产生调试信息。特别是,有一个源代码到二进制代码的映射:
add: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <add>:
int add(int a, int b) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 89 7d fc mov %edi,-0x4(%rbp)
7: 89 75 f8 mov %esi,-0x8(%rbp)
return a + b;
a: 8b 45 fc mov -0x4(%rbp),%eax
d: 03 45 f8 add -0x8(%rbp),%eax
10: 5d pop %rbp
11: c3 retq
用clang或emcc编译WebAssembly有类似的东西吗?
我用这些尝试了 -g
标志,但它没有相同的行为。
最后,我想要一个 .wat
代码到 C 代码的映射。
llvm-objdump -S
的工作方式应该与它对本机对象文件的工作方式相同。
如果您正在寻找缺少调试信息的代码的良好显示,您可能还想看看 wasm-decompile
,它是 wabt 项目的一部分。它能够比 normal/native 反编译器更好地使内容可读。