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

2024-04-16

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


我也有一些技巧来获取行号。 :)

  1. 创建一个监听器以获取未捕获的错误。我在我的主课上这样做:

    private function addedToStageHandler(event:Event):void {
        loaderInfo.uncaughtErrorEvents.addEventListener( UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler );
    }
    
  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" );
    }
    
  3. 添加额外的编译器参数:-compiler.verbose-stacktraces=true

  4. 创建发布版本。
  5. 现在是小技巧: 苹果: 转到包含 .app 文件的安装位置。右键单击并选择显示包内容。导航至目录 ▸ 资源 ▸ META-INF ▸ AIR。在那里你可以找到一个名为 hash.txt 的文件。复制哈希文件并将其重命名为 debug。使用某些文本编辑器打开调试文件并删除内容。现在完成,您将获得堆栈跟踪+行号。 视窗: 在文件资源管理器中浏览到其安装目录。导航到 {应用程序文件夹}▸META-INF▸AIR▸。在这里你可以找到一个名为 hash.txt 的文件。复制哈希文件并将其重命名为 debug。使用某些文本编辑器打开调试文件并删除内容。现在完成,您将获得堆栈跟踪+行号。

如果找不到哈希文件,只需创建一个不带文件扩展名的空文件并将其命名为“debug”。

使用 Air 3.6 进行测试!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在非调试模式下获取 Adob​​e AIR 全局运行时错误的堆栈跟踪? 的相关文章

随机推荐