调试嵌入式flash (swf)



我有一个"播放"Flash SWF文件的windows窗体应用程序。我看到随机方法:FlashMethodInvocation异常:System。AccessViolationException错误。输出只给我windows窗体应用程序的堆栈跟踪,而不是actionscript,我认为真正的错误正在发生。

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

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

在崩溃之前,SWF动作脚本可以正常运行几个小时。不幸的是,actionscript堆栈跟踪不包括在错误中,当它弹出到windows窗体应用程序。

我想看看在异常发生的时候在动作脚本中发生了什么。任何想法,我怎么能找到actionscript堆栈跟踪?

马特

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

1)先下载这个文件:

Flash Player内容调试器for Internet Explorer - ActiveX

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

3)在您的windows窗体应用程序中覆盖此文件(我假设您在应用程序中包含了Flash Player,而不是依赖于主机系统上可用的播放器,我不建议)

4)然后,在你的ActionScript项目中(在Flash Builder中)创建一个SWF的调试器版本(只需在"调试模式"下启动项目,并将生成的SWF文件复制到你的windows窗体应用程序中。

5)保持调试器在FlashBuilder中运行,与您的windows窗体应用程序交互,直到它产生RTE。你应该在Flash Builder中看到ActionScript错误的跟踪。当然,你可以在Flash Builder中设置断点,然后像往常一样调试。

你可能想使用一种自动化的形式来重复整个过程(我想的是ANT或Flash Builder的外部工具(这是正确的名字吗?)-你甚至可以让你的windows应用程序由FB自动启动,在它首先创建一个新的SWF文件并将其放在正确的文件夹中)。

希望我讲得够清楚了。

祝你好运!

最新更新