调试 WebAssembly?用点强力工具吧!

《Proceedings of the ACM on Programming Languages》:Debugging WebAssembly? Put Some Whamm on It!

【字体: 时间:2025年11月07日 来源:Proceedings of the ACM on Programming Languages

编辑推荐:

  调试与监控是软件工程的关键环节,动态分析方法通过源码或中间代码注入、机器码或字节码重写、虚拟机API或硬件支持等方式实现应用监控。然而现有技术存在工具碎片化、通用框架仪器化开销大、底层机制配置繁琐等问题。本文提出WebAssembly生态中的Whamm框架,通过引擎级探查和字节码重写回退机制,结合声明式匹配规则、静态与动态预测、自动状态报告及用户库支持,在保持高性能的同时解决上述问题。其核心在于显式状态请求使引擎能高效封装参数和内联编译探查逻辑,字节码重写目标支持跨平台运行,显著降低碎片化。实验表明Whamm在监控工具实现中兼具表达力、灵活性和高效性。

  

摘要

调试和监控程序是软件工程及部署过程中的关键环节。动态分析方法通过源代码或中间表示(IR)注入、机器码或字节码重写、虚拟机API或直接硬件支持来监控应用程序。尽管这些技术在各自的领域内是可行的,但跨技术的通用工具却非常罕见,这导致了技能分散、重复劳动以及功能支持不一致的问题。我们在WebAssembly生态系统中通过Whamm来解决这一问题。Whamm是一个专为Wasm设计的仪器化框架,它利用引擎级别的探测机制,并提供字节码重写功能以提升代码的可移植性。Whamm解决了三个主要问题:1)工具的碎片化;2)通用框架带来的高昂仪器化开销;3)定制低级高性能机制的繁琐性。Whamm提供了完全可编程的仪器化功能,包括声明式匹配规则、静态和动态预测、自动状态报告以及用户库支持,通过编译器和引擎优化实现了高性能。Whamm的引擎API允许以Wasm代码的形式将仪器化代码提供给Wasm引擎,从而重用现有的引擎优化技术,并解锁新的优化方法(尤其是“内联化”技术),以最大限度地降低开销。我们工作的一个关键发现是:在匹配规则中显式请求程序状态(而非依赖反射机制),可以使引擎高效地组合参数,甚至将探测逻辑“内联”到代码中。Whamm简化了工具开发的工作流程,因为其字节码重写目标可以在任何环境中运行被仪器化的程序,从而减少了工具的碎片化现象,并推动了引擎支持技术的进步。我们通过实际案例展示了Whamm的强大功能与高效性能。
相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普
  • 急聘职位
  • 高薪职位

知名企业招聘

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号