Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GWT生产崩溃_Javascript_Debugging_Gwt - Fatal编程技术网

Javascript GWT生产崩溃

Javascript GWT生产崩溃,javascript,debugging,gwt,Javascript,Debugging,Gwt,我正在开发一个GWT-GAE Java交易应用程序,客户在服务器上下订单,然后服务器(通过AppEngine频道)通知客户更新。我的问题是,我遇到了不定期的客户崩溃-在5~10分钟的交易后,客户可能会崩溃(在Chrome中,我看到这个页面:chrome://crash/). 我在生产中测试了这一点,最多有10名交易员(在不同的机器上)同时交易30分钟,我通常会遇到4或5名独立客户崩溃。由于联系减少,或者交易活动减少,我看不到崩溃 我认为问题可能是ConcurrentModificationExc

我正在开发一个GWT-GAE Java交易应用程序,客户在服务器上下订单,然后服务器(通过AppEngine频道)通知客户更新。我的问题是,我遇到了不定期的客户崩溃-在5~10分钟的交易后,客户可能会崩溃(在Chrome中,我看到这个页面:chrome://crash/). 我在生产中测试了这一点,最多有10名交易员(在不同的机器上)同时交易30分钟,我通常会遇到4或5名独立客户崩溃。由于联系减少,或者交易活动减少,我看不到崩溃

我认为问题可能是ConcurrentModificationException,所以我尝试了1)对Scheduler.get().scheduleDeferred使用延迟命令,以及2)实现消息队列,但这两种方法似乎都没有帮助

我的问题是-如何调试它?在开发中,在出现内存错误之前,我可以同时建立的连接数量有限(2或3个),因此我无法复制我的问题。有没有一种方法可以查看生产中引发的导致这些崩溃的异常类型

我看了一下-我能在服务器上记录选项卡崩溃吗

谢谢

更新 我已经设置了gwt日志,但当我重现我的客户端崩溃时,它似乎没有记录它。它会记录各种其他信息,但在客户端崩溃时不会出错。在客户端上,我有一个围绕通道消息的尝试捕获:

try {
  SerializationStreamReader reader = ((SerializationStreamFactory)rpcService).createStreamReader(encodedData);
  Message message = (Message) reader.readObject();
  Log.info(name + ": " + message.toString());
  processMessage(message);
} catch (Exception e) {
  Log.fatal(name + ": error encoding " + encodedData);
}
当客户端崩溃时,我应该在服务器日志中看到什么吗?

是的,您可以使用

还有

这给了你更多的选择,比如

  • 自定义url

  • 格式化

    --------------编辑--------------

    你试过UncaughtExceptionHandler吗

    //安装一个UncaughtExceptionHandler,它将生成
    致命的
    日志消息

    Log.setUncaughtExceptionHandler();
    

使用
开发模式
大型应用程序或使用大量jsni的应用程序很快就会出现内存和性能问题。这是因为开发模式的架构需要IDE和浏览器插件之间复杂的通信过程,以及JVM和JS之间频繁的执行上下文切换

要调试复杂的东西,最好使用,它将只在浏览器中执行javascript,并提供一种很好的方法()在浏览器中调试应用程序,但使用java源代码


请注意,超级开发模式的设置有点复杂,特别是当您需要与后端通信时,重新加载过程有点慢,并且请注意您将错过IDEJava调试控制台。但是值得一试。

如何调试:dev模式还是superdev模式?我想是dev模式(我的项目使用默认的Google插件进行Eclipse设置)。谢谢,我现在正在测试它。在我完全测试后将再次更新。gwt-log似乎无法捕获浏览器选项卡崩溃-它将其他类型的消息记录到服务器,但当选项卡崩溃时,我看不到任何东西(在服务器日志中)。请尝试,谢谢,我也会看一看。