2011-06-27 29 views
3

我在一些項目中看到,ppl有自己的「調試類」。製作調試類

因此,不要鍵入:trace(「看看這個!」),而是鍵入Debug.trace(「看看這個!」)。

我看到的唯一優點是,您可以禁用調試類中的單個參數的每個跟蹤調用..但是,這就是全部。

我的問題是,如果我在AS3中使用Debug類,我可以獲得什麼優勢?

回答

3

我其實不用我的調試類那種方式。我有一個日誌記錄框架,這就是日誌的目的。我的Debug類有類似的事情

// 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()方法之前最近調用的類和方法。

+0

在釋放播放器中具有跟蹤/調試語句也非常棒。由於它們都通過Debug類,因此可以將它們存儲起來,然後將它們顯示在「輸出」TextField中。所以如果你的發佈版本出現問題,你仍然有調試信息 – divillysausages

+0

哦,而且這一次,在AS2中,我在AS2中構建了一個命令行 - 我有一個調試器,無需使用調試類。 – cwallenpoole

1

調試類可以讓你做不同的級別(注意,警告,錯誤,關鍵,啓示錄等)。正如你所提到的,你可以在一個地方禁用。你可以給郵件添加時間戳。您可以將輸出發送到不同的地方,這對於調試實時應用程序或調試偶發事件非常方便。你也可以有一些邏輯來檢測參數類型,並用調試信息做不同的事情。

+0

+1「您可以將輸出發送到不同的地方。」 @Artemix,你怎麼知道Debug.trace唯一做的就是調用trace()?也許它使用localConnection或externalInterface,並將輸出編組到一個自定義AIR應用程序或將數據發送到服務器。事實上,開發者將trace()調用混合到一起可能只是爲了方便ctrl + Enter樣式本地測試,但真正的黃金可能會在Flash輸出控制檯之外進行記錄。 – scriptocalypse

+0

在這種情況下,它僅用於此目的,但我認爲有一種稱爲「軌道」或類似的方法。 – Artemix