Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
在actionscript中使用flash player的正常版本(非调试版本)时,如何获取错误消息和堆栈跟踪?_Flash_Actionscript 3_Actionscript_Stack Trace_Error Logging - Fatal编程技术网

在actionscript中使用flash player的正常版本(非调试版本)时,如何获取错误消息和堆栈跟踪?

在actionscript中使用flash player的正常版本(非调试版本)时,如何获取错误消息和堆栈跟踪?,flash,actionscript-3,actionscript,stack-trace,error-logging,Flash,Actionscript 3,Actionscript,Stack Trace,Error Logging,我想在发布flash应用程序后记录其错误。 我将在web服务器上的文件上保存日志。 当您使用flash player的正常版本(非调试版本)时,您知道如何获取错误消息和堆栈跟踪吗?客户端日志记录 如果要在浏览器中(而不是在Flash调试器中)访问调试工具,有许多选项 最简单的选择是下载并继续使用跟踪 我做了大量的跨浏览器检查,因此在我的Utils包中使用了一个自定义的log函数来访问JS控制台: log.as loggingEnabled.as 有很多地方可以改进,使用这个函数需要做一些事情。

我想在发布flash应用程序后记录其错误。
我将在web服务器上的文件上保存日志。

当您使用flash player的正常版本(非调试版本)时,您知道如何获取错误消息和堆栈跟踪吗?

客户端日志记录 如果要在浏览器中(而不是在Flash调试器中)访问调试工具,有许多选项

最简单的选择是下载并继续使用
跟踪

我做了大量的跨浏览器检查,因此在我的Utils包中使用了一个自定义的
log
函数来访问JS控制台:

log.as loggingEnabled.as 有很多地方可以改进,使用这个函数需要做一些事情。您需要定义CONFIG::DEBUG,此外,您还需要为
事件的后台添加事件侦听器。激活
事件。停用
以打开和关闭
loggingEnabled
以防止flash崩溃。您还需要提供对flash视频的脚本访问

服务器端日志记录 如果您想使用Flash在服务器上记录消息,请使用Url加载器发送一个简单的Url请求,将消息作为参数传递给服务器端脚本。调用的日志脚本需要使用服务器端语言(如PHP或ASP.NET)编写


应注意对来自Flash的请求进行身份验证,以防止恶意访问(您不希望有人将一些可执行代码注入您的文件系统)。

据我所知,无法从11.5版之前的Flash player发行版本获取堆栈跟踪。然而,2012年9月26日的Flash player beta 11.5版为该版本的播放器添加了一个基本的堆栈跟踪。使用它时,Error.getStackTrace会告诉您引发错误的类和函数,但不包括类路径或行

公告:

用法示例:


如果您想使用beta 11.5之前的调试Flash Player从发布版SWF(未使用debug=true构建)获取stacktraces,您可以使用“-compiler.verbose stacktraces”标志构建应用程序。如果您想在Web服务器上记录数据,您需要将数据传递到服务器,并通过服务器端脚本存储数据。Flash没有内置机制来执行此操作,因为它完全是在客户端运行的。@zzbov感谢您提供的信息!我不知道flash没有内置的机制来实现这一点。但我已经计划使用URLLoader将数据传递给服务器端脚本。我不知道的是,当您使用flash player的正常版本(非调试版本)时,如何获取错误消息和堆栈跟踪。您可以检查位于C:\Documents and Settings[用户名]\Application Data\Macromedia\flash player的flashlog.txt中的错误、警告和跟踪\Logs@Hardik谢谢但我在开发时已经检查了flashlog.txt。我想知道的是,当我的应用程序的用户使用该应用程序时,我如何检查这些信息。检查这些信息谢谢您的信息。但是我想记录我的应用程序的用户在网站上使用我的flash应用程序时的错误。即使在用户的控制台上显示错误,我也无法检查它们。
package com.zzzzbov.utils
{
  import flash.external.ExternalInterface;

  public function log(... args):void
  {
    CONFIG::DEBUG
    {
      trace(args);
      if (loggingEnabled && ExternalInterface.available)
      {
        try
        {
          if (init === null)
          {
            init = ExternalInterface.call('eval', 'if(window.flashlog){false;}else{window.flashlog=function(){if(window.console&&console.log){if(console.log.apply){console.log.apply(console,arguments);}else{for(var i=0;i<arguments.length;i++){console.log(arguments[i]);}}}};true;}');
          }

          if (init)
          {
            var values:Array = new Array('flashlog');
            ExternalInterface.call.apply(ExternalInterface, values.concat(args));
          }
        }
        catch (e:Error)
        {
          //nothing really can be done
        }
      }
    }
  }
}
package com.zzzzbov.utils
{
  internal var init:* = null;
}
package zfl.utils
{
  internal var loggingEnabled:Boolean = true;
}