apache-flex 我可以建置Adobe AIR应用程序的除错版本吗?

fdbelqdn  于 2022-11-01  发布在  Apache
关注(0)|答案(3)|浏览(171)

我正在尝试调试客户机上的一个问题。问题是,该问题是一个运行时错误,几乎不知道它在哪里。这是一个间歇性的问题。我知道ADL允许我在调试模式下运行应用程序。问题是,告诉用户下载和管理ADL调用将是非常困难的。如果我可以给予最终用户一个安装/可执行文件来安装和运行,然后将问题的跟踪信息发送给我,这将容易得多。因此,我正在寻找的是客户端能够在调试模式下运行AIR应用的简单步骤。下载ADL和查找应用程序的安装位置将很难与最终用户进行远程管理。
更新:你必须确保你使用的是AIR 3.5和Flash 11.5,并在其他编译器设置中包含以下标志“-swf-version=18”。然后你必须捕捉到答案中提到的全局错误,它会告诉你错误的位置。当然,没有行号。只有例程名。感谢Lee的回答。

8fq7wneg

8fq7wneg1#

不是直接答案,但如果您发布了AIR3.5(或3.6 beta),则可以获得一些调试信息:
将未捕获RTE的侦听器添加到应用的顶层:

this.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, globalErrorHandler);

并从侦听器中错误中获取调试信息:

function globalErrorHandler(event:UncaughtErrorEvent):void
{
    var message:String;
    //check for runtime error
    if (event.error is Error)
        message = (event.error as Error).getStackTrace();
    //handle other errors
    else if (event.error is ErrorEvent)
        message = (event.error as ErrorEvent).text;
    else
        message = event.error.toString();
    //do something with message (eg display it in textfield)
    myTextfield.text = message;
}

getStackTrace将返回一个堆栈跟踪,即使是发布AIR应用程序(只要您使用的是AIR3.5或更高版本)。

5lhxktic

5lhxktic2#

没有SDK工具;我不认为在调试模式下运行aIR应用是可能的。但是,这里有一些替代方案可以考虑:

  • 客户端一定知道是什么导致了错误,对吗?你能给予他们一个特殊的构建,用警报框或日志记录或其他东西来帮助隔离错误到一行代码吗?
  • 您可以侦听uncaughtException事件吗?该事件将为您提供完整的堆栈跟踪(Error.getStackTrace());然后您可以将其记录下来--可能还包含其他信息。然后您只需告诉客户“转到此处”和“将此文件发送给我”。或者甚至可以在某个Alert中显示该信息,并让用户将其复制并粘贴到电子邮件中发送给您。有关uncaughtException herehere的更多信息
vsikbqxv

vsikbqxv3#

查看我的帖子。也许它可以帮助您在AIR发布版本中获得带有行号的堆栈跟踪。如何在非调试模式下获得Adobe AIR全局运行时错误的堆栈跟踪?
我现在在2个大项目中使用它,效果非常好。
问候语

相关问题