c++ - 在Firefox中执行WASM时, “debug trap handling”是什么

标签 c++ webassembly emscripten firefox-developer-tools

我已经使用脚本将大量C++代码编译为WASM,并且正在尝试优化其性能。这是我的探查器显示的内容:
Total Time   Total Cost  Self Time   Self Cost   Samples Function
51,272.77 ms    94.46%  51,272.77 ms    94.46%  29273   debug trap handling (in wasm)   Gecko
4,434.89 ms 8.17%   0 ms    0%  0       std::__2::__compressed_pair_elem<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >::__rep, 0, false>::__get() const   qalc.wasm   :3795283    localhost:8000
4,264.99 ms 7.86%   0 ms    0%  0       std::__2::__compressed_pair<std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >::__rep, std::__2::allocator<char> >::first() const  qalc.wasm   :3795198    localhost:8000
2,981.12 ms 5.49%   0 ms    0%  0       free  qalc.wasm   :3867464    localhost:8000
“调试陷阱处理”部分是什么意思,为什么我的代码在其中花费了这么多时间?

最佳答案

我认为这意味着Firefox对Wasm进行了编译,使其适合调试,因此由于探查器已打开,因此您可以逐行浏览Wasm。这通常意味着对其进行了解释。 (它与用于编译C++项目的标志无关。)
不太确定是否有从命令行进行概要分析的方法,也许您可​​以尝试插入对 console.profile(); 的调用来包围您所关心的C++代码部分。

关于c++ - 在Firefox中执行WASM时, “debug trap handling”是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64179342/

相关文章:

rust - 无法在 Mac m1 上遵循紫杉教程 - 使用未声明的类型 `Vec`

asp.net-core - Blazor Wasm PWA 未更新

cmake - 如何将 CTest 与 Node js 命令一起使用,测试使用 emscripten 从 C++ 编译的 JS 文件,并使用 Catch2?

c - 如何调试由于超出可用动态堆而导致的 Emscripten 段错误

javascript - 将 C 编译为 wasm,使用与 WasmFiddle 相同的设置

c++ - 我应该声明所有不抛出 noexcept 的成员/函数吗?

c++ - MPI如何使在根进程中初始化的变量在其他进程中可见

c++ - 为什么 gcc 的右移代码在 C 和 C++ 模式下不同?

c++ - 删除指针作为 std::map 的第一个键

javascript - 如何在 Blazor 中画一条线?