As3 swf字节码注入

3

我目前正在开发一款工具,可以帮助我们查看一个大型AS3/Air项目(超过2000个类)中哪些函数耗时较长,以便识别瓶颈和需要优化的函数。

实现这一目标的一种方法是使用Flash Builder Profiler,但它非常慢,并且在1或2分钟后就会崩溃。

另一种方法是手动编写包含最重要的函数耗时信息的文件。但这是一个手动过程,我无法覆盖所有项目的函数。

因此,我正在寻找一种将AS3字节码直接注入编译后的SWF的方法。通过这样的工具,我将在每个函数调用之后注入日志,从而能够覆盖所有项目的函数。

一些AS3库存在于做这种事情(AS3Commons ByteCode),但不适用于我的项目(我得到了解析错误),而且AS3很慢。

2个回答

9

我看到四个选项:

  • 首先,我想到了Joa Ebert的Apparat(感谢你,老兄),它提供了用于ABC字节码优化的工具,以及非常深入的API来操纵这个字节码。它是用Scala编写的,所以这也是学习这种很棒的语言的好时机。

  • 此外,您可以编写自己的工具。ABC(ActionScript Bytecode)格式以及其容器SWF文件格式都有很好的文档记录。解析这两个文件以查找有趣的标签并在字节码中添加所需指令可能不太困难。

  • 更简单的方法是,我们大多数人使用的SWF和ABC编译器mxmlc是开源的。您可以直接编辑编译器代码以实现所需功能。您需要的所有内容都在Adobe OpenSource Flex SDK网站上。

  • 作为对您的问题的另一种替代回答,而不是尝试在SWF中注入字节码(这将始终影响全局应用程序的性能),您可以在mm.cfg上使用AS3Trace / AS3DynamicProfile选项,以获得每个函数执行的完整日志,以及有关操作码执行的分析信息。更多信息请参见此处

总之,这样的外部分析工具将成为一个了不起的应用程序,可以开源并发布给社区,因为现在越来越多的“大型”AS3项目正在涌现。 ;)

还有另一种方法:https://dev59.com/FnRC5IYBdhLWcg3wROtQ - Simon Eyraud

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接