c++ - Emscripten 应用程序未执行

标签 c++ emscripten asm.js

当运行我的 asmjs\emscripten 应用程序时,从 C++ 编译,它突然开始记录:"run() called, but dependencies remained, so not running" 到 web 控制台,但什么也没有更多发生。 我在我的 main 的绝对开始处添加了一些cout's,但即使是它们也没有达到。

应用程序之前执行成功,但突然开始出现这种情况,我不知道是什么变化触发了这种情况。

有人知道如何调试吗?

更新

在尽可能多地删除源代码后,只要我 #include 就会发生这种情况,即使我的 main 只包含一个 cout。

最佳答案

理想情况下,当它在版本控制中运行时,您将拥有整个环境,然后构建每个版本以查看它在哪里出现问题。

您的代码可能在版本控制中,但 Emscripten 本身可能没有。如果您更新了 Emscripten,这可能会导致行为差异。我会尝试回到您在运行时使用的任何版本。请注意,有时各种缓存目录在 Emscripten 版本更改后仍然存在,并且可能需要手动清除(我忘了具体是哪个)。

剩余的依赖项可能意味着您正在尝试在 Emscripten 加载它需要的任何其他文件之前执行某些操作,例如 --preload-file--memory- 请求的文件初始化文件。注意根据https://kripken.github.io/emscripten-site/docs/getting_started/FAQ.html#faq-when-safe-to-call-compiled-functions在 C++ main 函数运行之前,您不应该尝试运行任何 Emscripten 函数。要检测到这一点,您可以从 main 调用您自己的 Javascript 函数(还有其他方法)。

事实上,这之前没有引起问题可能是一些看似无关紧要的事情:网络浏览器的更改或更新、并发下载限制的更改,或者运行它的网络服务器的更改。您可以查看浏览器中的“网络”选项卡,看看是否有任何不同或可疑的东西突然出现。

但是,由于甚至还没有到达 main,所以它可能不是那样。我会尝试注释掉你几乎所有的代码,然后让你几乎只有一个 hello-world 程序。也许您在 Module 对象中没有正确的设置,或者内存初始化文件的请求失败(您可以在浏览器的网络选项卡中检查该文件)。如果您的基本 hello world 程序仍然无法运行,那么您可以在一个单独的问题中再次发布其代码。

关于c++ - Emscripten 应用程序未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31859792/

相关文章:

c++ - Cocos2dx - 从缓存中清除特定纹理

javascript - "use asm"究竟做什么?

c++ - OpenGL VBO 和指针的问题

c++ - 您建议使用什么用于前馈神经网络的 C++?

performance - 尽管 JIT,是什么导致 web.archive.org 上的 DosBox 如此缓慢?

rust - 从 WebAssembly .wasm 模块获取 JavaScript 导入对象条目

Emscripten 中的 C++11 支持

unity3d - MS Edge 中与 Unity/WebGL 和 asm.js 相关的崩溃

emscripten - 在 emscripten 中禁用链接 libc

c++ - SSE2 内在函数 - 比较无符号整数