调试从非调试外部swf加载的内部swf的最佳方法是什么?

时间:2009-04-04 23:51:01

标签: flash actionscript-3 debugging actionscript flexbuilder

我有一个swf,我需要将flex builder调试器附加到。我可以完全访问源代码,并可以对此swf进行调试构建。

但是,这个swf是由另一个我没有源代码的swf的非调试版本加载的,并且不能用它进行调试构建。

这可能吗?

我尝试使用两个非常简单的swfs来模拟它,虽然它们都是调试版本时工作正常,但当外部swf是非调试版本时,我可以让调试器连接,我不会获取跟踪消息,断点不起作用,似乎锁定了Flash应用程序。

有什么想法?有什么明显的东西我不见了吗?

2 个答案:

答案 0 :(得分:1)

有趣的是,如果你编译一个几乎空的SWF,只是在非调试SWF(加载启用调试的SWF)中加载会发生什么?即DEBUG>非调查> DEBUG ...非调试级别是否为其“子级”取消调试消息?

我认为你想要的是使用flex调试器来实现堆栈跟踪等。但是在SWF中使用自定义记录器是很好的,如果你想让某人远程调试在线版本等,这是特别方便的。有几个谷歌,但最新的从我的头脑是ThunderBold

答案 1 :(得分:1)

根据Theo的想法,您可能需要引用调试容器中的类。然后,只要您将非调试swf加载到相同(或子)应用程序域(并且非调试swf执行相同操作),那么您将能够进入内部调试swf。

你可以像这样引用类(这是一种气味,但即使Flex在内部也是如此):

import com.pkg.ClassToDebug; ClassToDebug;
import com.pkg.AnotherClassToDebug; AnotherClassToDebug;
// ... etc

package com.what.ever
{
    public class ApplicationClassInDebugContainer
    {
    }
}