debugging - 使用 clang 编译到 wasm 时如何保留变量名称

标签 debugging clang webassembly names

clang 成功发出包含函数名称的 wasm 自定义名称部分(使用 -g 选项编译时),但是我发现没有办法发出未优化代码的参数名称和变量名称。是否有这样的选项,或者有一个开放的票证来保留此功能的进度?

更新,因为我还不能发表评论:

wasm 名称部分足够丰富来编码此信息:
https://webassembly.github.io/spec/core/appendix/custom.html?highlight=local

本地变量(参数和变量)甚至可以被 Chrome 调试器成功解析(可以通过 wat2wasm 进行测试),只是不是由 clang 发出。

最佳答案

;tldr;名称部分不够丰富,无法编码此信息。

当 clang 编译为 WebAssembly 时,源语言中的变量并不直接对应于 WebAssembly 结构,例如局部变量和全局变量(至少不是以一致的方式)。目前实现这一目标的唯一方法是通过 clang 发出的 DWARF 信息(如果您使用 emscripten 构建,则可以使用 -g3 来获取 DWARF 输出)。了解此调试信息的工具生态系统仍在增长,但 chrome 最近宣布支持使用它:https://developers.google.com/web/updates/2019/12/webassembly

关于debugging - 使用 clang 编译到 wasm 时如何保留变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65305119/

相关文章:

x86 - 如何使用 Clang 11、intel 语法和替换变量进行内联汇编

javascript - 一个单一文件的 WebAssembly html 演示

javascript - Web 程序集 - 整数值错误

python - 如何在 Python 的调试器中查看异常的详细信息?

c++ - Clang 完全不适用于未保存的文件?

regex - 特定 VBA/VBScript 正则表达式相关问题 (MS Access)

c++ - `std::call_once` 在 Windows 上的 Clang 12 上总是出现段错误(使用 libstdc++ 时)

wpf - 如何使 WPF 应用程序在 Web 浏览器上运行

Xcode 4.6 调试器 ."po"命令的奇怪问题不起作用

debugging - Squeak:在运行时获取方法的源代码