我有一个需要附加 flex builder 调试器的 swf。我可以完全访问源代码,并且可以对这个 swf 进行调试构建。
但是,这个 swf 是由另一个 swf 的非调试版本加载的,我没有源代码,也无法使用它进行调试构建。
这可能吗?
我试过用两个非常简单的 swf 来模拟它,虽然当两者都是调试版本时它工作正常,但当外部 swf 是非调试版本时,虽然我可以让调试器连接,但我没有得到跟踪消息,断点不起作用,并且似乎锁定了 Flash 应用程序。
有什么想法吗?我有什么明显的遗漏吗?
我有一个需要附加 flex builder 调试器的 swf。我可以完全访问源代码,并且可以对这个 swf 进行调试构建。
但是,这个 swf 是由另一个 swf 的非调试版本加载的,我没有源代码,也无法使用它进行调试构建。
这可能吗?
我试过用两个非常简单的 swf 来模拟它,虽然当两者都是调试版本时它工作正常,但当外部 swf 是非调试版本时,虽然我可以让调试器连接,但我没有得到跟踪消息,断点不起作用,并且似乎锁定了 Flash 应用程序。
有什么想法吗?我有什么明显的遗漏吗?
根据 Theo 的想法,您可能需要引用调试容器中的类。然后,只要您将非调试 swf 加载到同一个(或子)应用程序域中(并且非调试 swf 也是如此),那么您就可以闯入内部调试 swf。
您可以像这样引用类(这是一种气味,但即使是 Flex 在内部也这样做):
import com.pkg.ClassToDebug; ClassToDebug;
import com.pkg.AnotherClassToDebug; AnotherClassToDebug;
// ... etc
package com.what.ever
{
public class ApplicationClassInDebugContainer
{
}
}
有趣的是,如果您编译一个几乎为空的 SWF,它只加载非调试 SWF(加载启用调试的 SWF)会发生什么?即 DEBUG > NON-DEBUG > DEBUG ...非调试级别是否取消其“孩子”的调试消息?
我认为您想要的是使用 flex 调试器进行堆栈跟踪等,但最好在您的 SWF 中使用自定义记录器,如果您希望有人远程调试在线版本等,这特别方便。谷歌有一些但是我想到的最新消息是ThunderBold。