在浏览器中运行 Flash 时查看 trace()

27

在任何浏览器中运行Flash/Flex电影时,查看trace()输出的简单方法是什么?

9个回答

25

下载并安装Flash Player的内容调试器版本

通过添加mm.cfg文件来启用跟踪日志记录 (官方指南):

ErrorReportingEnable=1

    TraceOutputFileEnable=1

mm.cfg文件保存的位置取决于操作系统:

  • Mac OS X:/Library/Application Support/Macromedia
  • Windows:%HOMEDRIVE%\%HOMEPATH%
  • Linux:/home/用户名

日志文件flashlog.txt可在以下位置找到:

  • Windows 95/98/ME/2000/XP:C:\Documents and Settings\用户名\Application Data\Macromedia\Flash Player\Logs
  • Windows Vista:C:\Users\用户名\AppData\Roaming\Macromedia\Flash Player\Logs
  • Mac OS X:/Users/用户名/Library/Preferences/Macromedia/Flash Player/Logs/
  • Linux:/home/用户名/.macromedia/Flash_Player/Logs/

可以选择安装Firefox附加组件FBTracer,它将在Firebug面板中显示跟踪输出。


2
这个答案需要更新 - "官方步骤"链接已经失效,而FlashTracer自2008年7月以来也没有更新。 - Daniel Schaffer
2
FlashTracer插件似乎没有更新到最新版本的Firefox。但是我在http://code.google.com/p/flash-tracer/找到了一个方便的独立GUI。 - Marc Novakowski
您可以直接打开flashlog.txt文件,无需使用单独的插件来读取它。 - OrangeDog
2
另一个可能的替代FlashTracer是FlashFirebug。https://addons.mozilla.org/en-US/firefox/addon/flashfirebug/虽然我无法让它工作(可能是许可问题),所以最终使用了上面提到的Vizzy。还发现了这篇关于如何在Chrome中让Vizzy工作的帖子:http://www.burnedouthippy.com/2011/02/google-chrome-flash-debugger-and-tracing-in-the-browser/ - Dan
或者只需使用 import flash.external.*; /*....*/ ExternalInterface.call('console.log', '这很棘手'); 与 trace? - Ejaz
1
很好,你更新了“官方步骤”链接,但是如果链接再次离线,你也应该在这里描述这些步骤。StackOverflow指南也鼓励这样做:http://stackoverflow.com/help/how-to-answer。你不必引用整个页面,只需引用相关信息(如何启用跟踪日志)。 - OMA

16

我只使用console.log函数(大多数现代浏览器都已实现);

import flash.external.ExternalInterface;

public static function log(msg:String, caller:Object = null):void{
        var str:String = "";
        if(caller){
            str = getQualifiedClassName(caller);
            str += ":: ";
        }
        str += msg;
        trace(str);
        if(ExternalInterface.available){
            ExternalInterface.call("console.log", str);
        }
    }

你还需要导入 flash.utils.getQualifiedClassName; - SiZiOUS

13

可以尝试使用De Monster的MonsterDebugger进行调试,它是一个可爱的AIR应用程序,可以调试跟踪对象、跟踪记录和显示链。非常好用,而且是开源的!

http://demonsterdebugger.com/

您也可以配置Flash和Flex以将日志写入日志文件。了解如何操作请查看以下链接:

http://livedocs.adobe.com/flex/3/html/help.html?content=logging_04.html

最近我一直在使用MonsterDebugger,但我曾经有一个别名,运行unix上的“tail”命令来实现对flashlog文件的跟踪,从而有效地为我提供了一个“在浏览器中”跟踪窗口:

alias flashlog='tail -f /PATH/TO/flashlog.txt'

或者,如果你有一个日志查看器(比如Mac OS上的Console),你可以在那里查看日志。我建议这些选项的唯一原因是FlashTracer很容易"崩溃" ;)


翻译:由于只适用于AIR和AS3应用程序,因此并不完美。 - Robin Rodricks
3
好的,如果人生中有什么是完美的,那是什么? - typeoneerror
1
哇,我真希望2年前就发现这个工具。这只是表明,作为程序员,我们太习惯于看着Shell输出飞过去了,有时会忘记一个良好设计的图形化调试器可以多么美妙。 - Stephano

4
Vizzy是一个基本的日志文件查看器,如果您想要这样的工具,它会让您的生活更加简单。您只需安装调试播放器,然后安装Vizzy。它是一个窗口,用于跟踪flashlog文件。好处是它为您执行所有mm.cfg文件相关的繁琐操作。
链接:http://code.google.com/p/flash-tracer/

易于使用的工具。一旦安装了调试Flash播放器,无需配置即可完成所有操作。由Vizzy完成。独立于浏览器。很酷的工具。 - Dimuthu

3

也许不如其他方案花哨或先进,但我曾经在flash动画中创建了自己的日志函数(有趣的是,叫做log),它调用trace并使用页面上的js函数(使用您熟悉的任何方法)。页面上的函数只是一个简单的console.log(),带有Firebug。 简单而且非常实用。


2

我是一个快乐的Thunderbolt用户,也许这也值得一看(具有多个日志级别,在使用 firebug 时可立即使用)。


0

Unix的tail命令对我很有帮助:

tail -f ~/Library/Preferences/Macromedia/Flash\ Player/Logs/flashlog.txt

选项-f保持日志文件打开并通过标准输出将其尾随至一个打开的终端窗口中。这是Mac解决方案,我不确定Windows上的tail等效物是什么。

请注意,此路径基于此文档,由@Jarvis发布在上面。


0

自从Macromedia被Adobe收购后,我以为应该是'D:\Documents and Settings\user_name\Application Data\Adobe\Flash Player\Logs\flashlog.txt'。这让我浪费了几分钟的时间。最终,我决定尝试查看'D:\Documents and Settings\user_name\Application Data\Macromedia\Flash Player\Logs\flashlog.txt',结果我成功地看到了Flash trace()输出。

我想知道为什么Adobe仍然将日志文件位置保留在Macromedia文件夹中。无论如何,我可以看到在浏览器中运行的Flash应用程序的trace输出,我很开心 :)


0
在Windows中,如果您使用本地化版本(例如西班牙语)的操作系统,则必须将“Application Data”替换为本地化版本(例如“Datos de programa”)。

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