Emscripten应用程序未执行
Emscripten application not executing
当运行我的asmjsemscripten应用程序时,从c++编译,它突然开始将:"run() called, but dependencies remain, so not running"
记录到web控制台,并且没有发生更多的事情。我在main的绝对开头添加了一些cout的,但即使它们也没有到达。
应用程序之前执行成功,但突然开始发生这种情况,我不知道是什么变化触发的
有人知道如何调试这个吗?
更新
在删除了尽可能多的源代码后,只要我#include就会发生这种情况,即使我的main只是由一个单独的cout组成。
理想情况下,您应该拥有在版本控制中运行的整个环境,并构建自那以后的每个版本,以查看它在哪里出错。
您可能在版本控制中有您的代码,但可能没有Emscripten本身。如果你更新了Emscripten,这可能会导致行为上的差异。我会尝试回到你运行时使用的版本。请注意,有时在Emscripten版本更改后,各种缓存目录仍然存在,并且可能需要手动清除(我忘记了具体是哪一个)。
剩余的依赖关系可能意味着您试图在Emscripten加载任何其他需要的文件之前做一些事情,例如--preload-file
或--memory-init-file
请求的文件。注意,根据https://kripken.github.io/emscripten-site/docs/getting_started/FAQ.html#faq-when-safe-to-call-compiled-functions,在c++ main
函数运行之前,不应该尝试运行任何Emscripten函数。为了检测这一点,你可以,例如,从main
调用你自己的Javascript函数(也有其他的方法)。
事实上,在此之前没有引起问题可能是一些看起来完全不相关的事情:web浏览器的更改或更新,更改并发下载限制,或者正在运行的web服务器的更改。你可以查看浏览器的"网络"选项卡,看看是否有什么不同或可疑的地方。
然而,由于main甚至没有到达,那么它可能不是。我会尝试注释掉几乎所有的代码,这样你实际上除了一个hello-world程序什么都没有。也许您在Module对象中没有正确的设置,或者对内存初始化文件的请求失败(您可以在浏览器的Network选项卡中检查该选项卡)。如果基本的hello world程序仍然不能工作,那么您可以在一个单独的问题中再次发布它的代码。当浏览器内存不足时也会发生这种情况。不幸的是,浏览器的内存处理不在我们的控制范围内,所以除了减少有效负载之外,您可以做的不多。这包括代码大小、预加载内容大小等。基本上,任何可以减少程序总内存消耗的方法都有助于解决这个问题。浏览器厂商一直在努力改进这一点,但这还需要一段时间。
我认为你没有提供足够的信息来真正确定。但它可能是,例如,你的js突然越过一些内存阈值,超过了浏览器想要分配给它。你可以尝试减少内存使用量/流式传输一些资产而不是预加载它们/发布更少的代码/使用- o优化级别?
- 按下Arduino按钮后,如何在C#应用程序上执行操作
- 计算有多少人执行我的C++应用程序
- 从Qt应用程序执行MSI文件
- 我在哪里编写在退出 C++ 窗口窗体应用程序之前执行的代码部分
- 应用程序执行器 vs lpsz用户名 ADsOpenObject.
- 执行递归函数时 C++ 应用程序崩溃
- 程序'main.exe'运行失败:指定的可执行文件不是此操作系统平台的有效应用程序
- 有没有办法在C++应用程序的多次执行中保存值?
- 应用程序在 C++ QT 上执行 sql 后崩溃
- 在 Ubuntu 16.04 的 usr/local/bin 中安装的 c++ 应用程序在从主目录执行时无法正常运行
- 如何分离以C++执行的 Java 应用程序的 stdin/stout/stderr 流
- 有什么理由更喜欢从 IDE 中运行应用程序而不是运行独立的可执行文件?
- 该代码注入第三方Qt应用程序并执行一些方法来获取Qt应用程序信息
- 在 Ubuntu 上运行的节点服务器需要执行 C# 应用程序 - 如何执行
- 我的应用程序是从Visual Studio内部运行还是通过执行EXE文件运行
- 使用可执行应用程序创建和"Scheduling" pthreads
- 是否可以从外部进程注入和执行应用程序
- 如何在不冻结应用程序 1 的情况下从另一个应用程序 1 执行应用程序 2
- CreateProcessAsUser未从Non-Sys32目录执行应用程序
- 执行 c++ 应用程序时获取错误"child exited with value 255"