2011-04-08 123 views
3

在我的應用我目前使用替代Console.WriteLine進行日誌/跟蹤?

#if DEBUG 
Console.WriteLine(....) 
#endif 

在許多地方。這只是一個臨時措施,並且很好,但我想知道我應該如何正確地做到這一點。有人提到NSLog簡要介紹給我,但我找不到任何Monotouch和NSLog信息,我不確定信息是如何檢索的,以便我可以看到發生了什麼。最後,如果有人正在使用任何特定的策略來進行崩潰扣除和堆棧跟蹤抓取,那麼我就會全神貫注。

回答

5

這篇博客文章你應該好好利用C#優勢的[條件]支持的語言。

您添加此屬性的方法,如:

class Util { 
    [Conditional ("DEBUG")] 
    void Log (string msg) 
    { 
     Console.WriteLine (msg); 
    } 
} 

這可以讓你寫這樣的代碼:

Util.Log ("Starting"); 
DoSomething(); 
Util.Log ("Ending"); 

如果符號DEBUG的定義,上面的代碼編譯的三條線,但如果符號未定義,編譯器將只爲DoSomething生成代碼。

這使您可以將調試代碼保存在程序中,並通過使用編譯器定義將其打開/關閉。

然後,您將DEBUG添加爲您的DEBUG配置文件中的一個定義。同樣的技術可以應用於其他配置構建,你可以使用上面的模擬器vs設備或調試vs AppStore vs AdHoc

+0

謝謝,雖然我可以在日誌中使用日誌記錄意味着什麼? – 2011-04-10 21:27:21

3
+0

這是一個了不起的帖子。我一直都在使用它。 – 2011-04-08 18:29:51

+0

我也是!如果您還沒有收藏,請將其加入書籤! – Jordan 2011-04-08 18:44:02