如何在非调试模式下获取Adobe AIR全局运行时错误的堆栈跟踪?

Sav*_*viz 2 air global stack-trace

新版本AIR使我们能够全局捕获运行时错误并处理它们.问题是除了错误ID和错误消息和名称之外,它没有堆栈跟踪或有关错误的任何有用信息.例如,它可能告诉我发生了空指针异常,但它不会告诉我在哪里或哪个方法或任何东西.运行时的调试版本为我们提供了所有这些,但是当应用程序部署到客户时,它没有在调试版本上运行,因此没有任何有用的信息可用.我想知道这个小组是否有任何关于如何在AIR应用程序中更好地记录错误的建议,以便更好地支持产品.有什么建议?

Ste*_*her 5

我也有一点点黑客来获取行号.:)

  1. 让听众得到未被捕获的错误.我在我的主要课程中这样做:

    private function addedToStageHandler(event:Event):void {
        loaderInfo.uncaughtErrorEvents.addEventListener( UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler );
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 例如我的听众error.getStackTrace():

    private function uncaughtErrorHandler( event:UncaughtErrorEvent ):void
    {
        var errorText:String;
        var stack:String;
        if( event.error is Error )
        {
            errorText = (event.error as Error).message;
            stack = (event.error as Error).getStackTrace();
            if(stack != null){
                errorText += stack;
            }
        } else if( event.error is ErrorEvent )
        {
            errorText = (event.error as ErrorEvent).text;
        } else
        {
            errorText = event.text;
        }
        event.preventDefault();
        Alert.show( errorText + " " + event.error, "Error" );
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加其他编译器参数: -compiler.verbose-stacktraces=true

  4. 创建发布版本.
  5. 现在小黑客:Mac:转到你有.app文件的安装位置.右键单击并选择显示包内容.导航到目录▸资源▸META-INF▸空气.在那里你可以找到一个名为hash的文件.复制哈希文件并将其重命名为debug.使用一些文本编辑器打开调试文件并删除内容.现在完成堆栈跟踪+行号.Windows:浏览到文件资源管理器中的安装目录.导航到{app-folder}▸META-INF▸AIR.在这里,您可以找到一个名为hash的文件.复制哈希文件并将其重命名为debug.使用一些文本编辑器打开调试文件并删除内容.现在完成堆栈跟踪+行号.

如果找不到哈希文件,只需创建一个没有文件扩展名的空文件,并将其命名为debug.

经过Air 3.6测试!