制作一个Debug类

3

我在一些项目中看到有些人有自己的"Debug类"。

所以,不是输入:trace("看这里!"),而是输入Debug.trace("看这里!")。

我唯一看到的优点是,你可以使用Debug类中的单个参数禁用每个跟踪调用..但是,仅此而已。

我的问题是,如果我在AS3中使用Debug类,我能获得什么优势?

2个回答

3

实际上我并不会这样使用我的调试类。我有一个专门的日志框架来处理这个问题,这就是日志的作用。我的调试类包含以下内容:

// I usually use these for debugging and it avoids the need of an 
// additional import.
function whatIs( obj:* ):String{ return getQualifiedClassName( obj )}
function describe( obj:* ):XML{ return describeType( obj ); }

我还有一个getLines方法——它返回长字符串,这样我就可以轻松地查看日志跟踪并查看特定点。

但最重要的是:

function getStack():String {
    try
    {
        throw new Error( "Someone set us up the bomb!" );
    }
    catch( e:Error )
    {
         return e.getStackTrace();
    }
}

我甚至有一个getStack的封装器,它返回在调用getStack()方法之前最近调用的类和方法。

它也非常适用于在发布版本中拥有跟踪/调试语句。因为它们都经过您的Debug类,您可以存储它们,然后在“输出”文本字段中显示它们。因此,如果您的发布版本出现问题,您仍然有调试信息可用。 - divillysausages
哦,还有一次,在AS2中,我构建了一个AS2命令行 - 我拥有了一个调试器,而不需要使用debug类。 - cwallenpoole

1
一个调试类可以让你设置不同的级别(注意、警告、错误、严重、末日等)。正如你所提到的,你可以在一个地方禁用它。你可以给消息加上时间戳。你可以将输出发送到不同的位置,这对于调试实时应用程序或调试偶尔发生的问题非常有用。你还可以编写一些逻辑来检测参数类型并对调试信息执行不同的操作。

在“您可以将输出发送到不同的位置”上+1。@Artemix,您怎么知道Debug.trace的唯一作用是调用trace()?也许它还使用localConnection或externalInterface,并将输出编组到自定义AIR应用程序或将数据发送到服务器。开发人员将trace()调用混合在一起的事实可能只是为了方便ctrl + Enter样式的本地测试,但真正的价值可能是在Flash输出控制台之外记录日志的潜力。 - scriptocalypse
在这种情况下,它仅用于该目的,但我认为有一个叫做“track”或类似的方法。 - Artemix

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