返回
Debugging WebAssembly? Put Some Whamm on It!
DOI:10.1145/3763124.png)
摘要
En 中文
调试和监控程序是软件开发和部署的重要组成部分。动态分析通过源代码或IR注入、机器码或字节码重写、虚拟机API或直接硬件支持来监控应用程序。尽管这些技术在其各自领域内是可行的,但跨技术的通用工具很少见,导致技能碎片化、重复工作和功能支持不一致。我们通过Whamm解决了WebAssembly生态系统中的这一问题,Whamm是一个用于Wasm的插桩框架,采用引擎级探测并具有字节码重写回退机制以促进可移植性。Whamm解决了三个问题:1)工具碎片化,2)通用框架的插桩开销过高,3)定制底层高性能机制的繁琐性。Whamm提供完全可编程的插桩功能,包括声明式匹配规则、静态和动态断言、自动状态报告和用户库支持,并通过编译器和引擎优化实现高性能。Whamm引擎API允许将插桩作为Wasm代码提供给Wasm引擎,重用现有引擎优化并解锁新优化,特别是内建函数化(intrinsification),以最小化开销。我们工作的关键见解是,在匹配规则中显式请求程序状态,而非使用反射,使引擎能够高效地捆绑参数,甚至内联编译后的探测逻辑。Whamm简化了工具开发工作,其字节码重写目标可以在任何地方运行插桩程序,降低碎片化并推动引擎支持的前沿发展。我们通过非平凡监控器的案例研究评估了Whamm,表明其具有表达力、强大性和高效性。
Keyword:
dynamic analysis
instrumentation
debugging
software tooling
We-bAssembly
virtual machines
optimization
intrinsification
dynamic instrumentation
bytecode rewriting
static instrumentation
期刊
P
IF:
2.8
论文数:
308
被引数:
4.7K
机构
引用论文
BREWasm: A General Static Binary Rewriting Framework for WebAssemblyBREWasm: 一个通用的WebAssembly静态二进制重写框架


