调试嵌入式闪存 (swf)

Debugging embedded flash (swf)

我有一个 windows 表单应用程序,"plays" 一个 Flash SWF 文件。我看到随机方法:FlashMethodInvocation 异常:System.AccessViolationException 错误。输出只给我 windows 表单应用程序的堆栈跟踪,而不是动作脚本,我认为真正的错误正在发生。

我也有 swf 的源代码,它都是用 ActionScript 3 编写的,我使用 flashbuilder 创建它。

windows 表单应用程序是用 C# 编写的。 windows 表单应用程序创建一个 ShockWave ActiveX 控件的实例,然后通知它加载 swf。 SWF和C#代码之间通过actionscript提供的外部接口进行交互。

SWF 动作脚本在崩溃前的几个小时内都可以正常运行。不幸的是,当它冒泡到 windows 表单应用程序时,actionscript 堆栈跟踪不包含在错误中。

我想看看发生异常时动作脚本中发生了什么。关于如何找到动作脚本堆栈跟踪的任何想法?

马特

我曾经遇到过与您类似的情况,我记得通过将 "regular" Flash Player 替换为 "debuger" 版本解决了这个问题。你说你用的是ActiveX版本的播放器,所以

1) 首先下载这个文件:

Flash Player content debugger for Internet Explorer - ActiveX

2) 安装它,然后导航到:"c:\Windows\SysWOW64\Macromed\Flash\",在那里你应该找到一个名为“FlashUtil*_ActiveX.dll”的文件,它刚刚更换(检查文件的日期)。这是您刚刚安装的 Flash 播放器的调试器版本。

3) 在您的 windows 表单应用程序中覆盖此文件(我假设您在应用程序中包含了 Flash Player,而不是依赖主机系统上可用的播放器,我不推荐这样做).

4) 然后,在您的 ActionScript 项目中(在 Flash Builder 中)创建 SWF 的调试器版本(只需在 "Debug Mode" 中启动项目,然后将生成的 SWF 文件复制到您的 windows表格申请。

5) 在 FlashBuilder 中保留调试器 运行,与您的 windows 表单应用程序交互,直到它生成 RTE。您应该在 Flash Builder 中看到 ActionScript 错误的踪迹。当然,你也可以在Flash Builder中设置断点,照常调试。

您可能希望使用一种重复整个过程的自动化形式(我想到的是 ANT 或 Flash Builder 的外部工具(这个名称正确吗?)—您甚至可以拥有 windows 应用程序在 FB 首先创建一个新的 SWF 文件并将其放在正确的文件夹中后自动启动。

希望这已经够清楚了。

祝你好运!