debugging 如何在使用clang编译为wasm时保留变量名

mlnl4t2r  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(214)

clang成功地发出了一个包含函数名的wasm自定义名称部分(当使用-g选项编译时),但是我发现没有办法同时发出未优化代码的参数名和变量名。是否有这样的选项,或者一个开放的票证来保持这个特性的进度?
更新,因为我还不能发表评论:
wasm名称部分足够丰富,可以对以下信息进行编码:
https://webassembly.github.io/spec/core/appendix/custom.html?highlight=local
局部变量(参数和变量)甚至可以被Chrome调试器成功解析(可以通过wat 2 wasm测试),只是不会被clang发出。

ergxz8rk

ergxz8rk1#

;tldr;名称部分不够丰富,无法对该信息进行编码。
当clang编译为WebAssembly时,源语言中的变量不直接对应于WebAssembly构造,如局部变量和全局变量(至少不是以一致的方式)。当前唯一的实现方法是通过Clang发出的DWARF信息(如果使用emscripten构建,则可以使用-g3获得DWARF输出)。理解这些调试信息的工具生态系统仍在增长,但chrome最近宣布支持使用它:https://developers.google.com/web/updates/2019/12/webassembly

相关问题