2

我想在发布模式下而不是在调试模式下发布我的 flash 应用程序,以便在发布应用程序后查看 trace() 的结果。

我不在乎调试模式会使处理速度有点慢。
除了处理速度,发布在调试模式下编译的闪存应用程序是否有缺点?

是否可能由于调试模式导致应用程序抛出异常或应用程序用户的 Flash Player 崩溃?

4

2 回答 2

4

这里有几个缺点。我做了一些简单的测试,这些测试并不能真正证明任何事情,因为它们无法判断这是否是由不同的播放器引起的,以及额外的内存/文件大小值是线性增加还是保持在该水平。他们只是表明存在差异。

  • 文件大小增加
    • 在一行中测试(mxmlc 4.5.1)空文档类:
      • -debug=false: 550 字节
      • -debug=true: 667 字节
    • 为每一行代码添加一个额外的行号指令(甚至可能为每个声明/语句/表达式)
  • 包含您的项目结构:.as 文件的完整路径。
    • 可能的隐私问题(可能显示本地用户名)
    • 显示内部项目名称,如果在路径中使用,可能是内部版本
    • 可能表示使用过的操作系统和/或 IDE
  • 内存消耗增加
    • 很简单的测试看任务管理器:for循环创建本地对象
      • 调试:~ 6300k - 7400k
      • 发布:~ 5800k - 6900k
  • 较慢(正如问题中已经提到的)

我不确定这里是否存在安全问题,因为跟踪语句不会显示任何无法从内存中提取或通过反编译重建的内容。也许跟踪的存在表明它可能是应用程序的关键部分,但通常即使非调试字节码仍然包含这些跟踪指令。不过,反编译器可以使用行号来创建更漂亮的代码。

于 2011-09-30T06:53:24.890 回答
2

@kapep 关于调试模式对您的 swf 所做的事情的回答是正确的。

但不必对跟踪使用调试模式 - 在发布模式下编译并使用不同的调试工具,如

并且可能使用日志框架来使用正常的跟踪语句以及外部记录器捕获的语句。

我可以在这里推荐这个:欧芹+香料库

这是一个简短的手册:http ://www.spicefactory.org/parsley/docs/2.0/manual/logging.php#intro

于 2011-09-30T07:41:15.887 回答