如何在非调试模式下获取 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 全局运行时错误的堆栈跟踪? 的相关文章

  • 在 Java 中伪造堆栈跟踪

    当您在 Java 中使用 RMI 时 异常的远程堆栈跟踪将在您收到异常时添加到前面 有点像这样 ERROR Client received error when doing stuff myapp FooBarException bla a
  • 递归中的全局变量。 Python

    好的 我正在使用 Python 2 7 3 这是我的代码 def lenRecur s count 0 def isChar c c c lower ans for s in c if s in abcdefghijklmnopqrstuv
  • 堆栈跟踪中的神秘行

    While 调查堆栈跟踪差异 https stackoverflow com questions 42462750 why java enum need to check class and declaringclass in compar
  • Adobe Air / Flex 的最佳 ORM

    我不确定我在这里缺少什么 但我找不到可靠的 AIR ORM 我发现的那些没有很好的记录 而且似乎没有坚实的追随者 现在还不存在可靠的 ORM 吗 我所知道的 http flexorm riaforge org http flexorm ri
  • VC++ 堆栈跟踪无法解析生产中的函数名称

    我最近使用实现了堆栈跟踪日志记录boost 的新 stacktrace 库 https www boost org doc libs develop doc html stacktrace getting started html int
  • 列出 emacs 中的所有顶级全局变量

    主要是为了我自己的启发 我尝试列出当前 Emacs 会话中加载的所有全局变量 我正在考虑做的是生成一个包含列出的所有功能的 HTML 文件 当然 定义函数 var 等的文件也很有用 emacs 中已经内置了一些可以提供帮助的东西吗 L 沿着
  • SQLite 错误:“无法将文本值转换为数值。”

    我找到了解决方法 但我对 Adob e Air 和 SQLite 遇到的问题完全感到困惑 一个UPDATE我认为在开发过程早期工作正常的查询突然开始失败并出现错误details could not convert text value to
  • 在Java中捕获全局按键

    因此 每当用户在 Swing 应用程序中的任意位置按下空格键时 我想触发一个事件 暂停 取消暂停某些媒体 由于有如此多的控件和面板可以具有焦点 因此实际上不可能向所有控件和面板添加关键事件 更不用说总的 所以我发现 KeyboardFocu
  • Google Play 控制台堆栈跟踪

    在 Google Play Console 中 我收到以下异常跟踪 虽然我添加了反混淆文件 但行号显示为 0 java lang NullPointerException at com ae apps common managers Con
  • as3 AIR for android - 应用程序沙箱内容错误

    目标 我试图允许外部加载的 swf 文件与从设备本地加载的文件相互通信 我需要能够访问变量 函数和对象 我在从网上加载 swf 内容时已经实现了这一点 as3 从网络外部加载的swf 控制从网络外部加载的swf https stackove
  • Adobe AIR 执行程序

    我想按下 Adob e AIR 应用程序中的按钮并执行某些已安装的程序 例如 我有一个名为 Start Winamp 的按钮 当按下这个按钮时 它应该直接启动 Winamp exe 我不想执行一些命令行 我只想启动一个 exe 或者 是同一
  • 如何通过http打开远程sqlite数据库?

    是否可以通过 http 打开 sqlite 文件 我只需要读取数据库 并希望我可以做类似的事情 var dbFile File new File http 10 1 1 50 project db sqlite sqlConnection
  • 保存应用程序状态 AIR

    有没有办法在 AIR 桌面版 Flex AS3 中保存应用程序状态以保存文件 Thanks 您需要确保您的所有课程都已可序列化 http en wikipedia org wiki Serialization 然后在退出应用程序时将它们序列
  • ActionScript 的 File.upload 不适用于 iOS 设备的 Air SDK

    我尝试使用 ActionScript 的 File upload 在 Air SDK for iOS 环境中上传文件 但 File upload 无法正常工作 调用 File upload 后 不会执行有关文件上传的处理程序 也不会捕获任何
  • “重置”对象变量的“Pythonic”方式?

    我认为 这里的 变量 指的是 名称 不完全确定pythonistas使用的定义 我有一个对象和一些方法 这些方法都需要并且都改变对象的变量 我怎样才能以最Pythonic和最好的方式 尊重OOP的技术 实现让方法使用对象变量 同时又保留其他
  • 如何在非调试模式下获取 Adob​​e AIR 全局运行时错误的堆栈跟踪?

    新版本的AIR使我们能够全局捕获运行时错误并处理它们 问题是 除了错误 ID 错误消息和名称之外 它没有堆栈跟踪或任何有关错误的有用信息 例如 它可能告诉我发生了空指针异常 但它不会告诉我在哪里 哪个方法或任何事情 运行时的调试版本为我们提
  • 在 Flex SDK 上叠加 AIR SDK 后出现问题

    我尝试在 Windows 计算机上将 AIR SDK 覆盖到 Flex SDK 上 但之后遇到问题 我尝试覆盖两个 SDK 的多个官方版本 包括 Apache Flex SDK 并按照此处提到的步骤进行操作 http helpx adobe
  • Adobe Air Mobile 为什么启动视频 stageVideo 时舞台会闪烁?

    我正在尝试使用 stageVideo 在 Android 平板电脑上播放视频 但每当我单击播放并将视频添加到舞台时 孔应用程序都会闪烁 然后视频会添加到舞台 然后视频开始全部像素化 然后它消失并开始正常播放 只需跳跃几次 我想知道什么情况会
  • 在视图之间传递变量 SwiftUI

    再次基本问题 我想让变量 anytext 对于我要添加的所有未来视图都可见且可访问 在我的例子中 变量将是String 如果是的话 程序会改变吗 Float 我怎样才能将其另存为全局变量 如果我重新启动应用程序 变量会自行删除吗 如何保存即
  • 从 Air Native 扩展返回结构

    是否可以从本机代码返回结构 返回 int 或 boolean 相对简单 但是如何将更复杂的结构返回给动作脚本 您可以返回任何可以在本机代码中表示为 FREObject 的对象 这实际上包括任何 Actionscript 类或 Actions

随机推荐