当运行我的 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/