Console.WriteLine的替代日志/跟踪?

Dri*_*uak 3 iphone xamarin.ios

在我的应用程序目前我正在使用

#if DEBUG
Console.WriteLine(....)
#endif
Run Code Online (Sandbox Code Playgroud)

在许多地方.这是一个临时措施,并且很好,但是我想知道我应该如何正确地做到这一点.有人在传递过程中向我简要提到了NSLog,但我找不到任何Monotouch和NSLog信息,而且我不确定这些信息是如何可检索的,以便我可以看到发生了什么.

最后,如果有人使用任何特定的策略进行崩溃扣除和堆栈追踪抓取,我会全力以赴.

mig*_*aza 5

你应该利用C#在该语言中的[条件]支持.

您将此属性添加到方法,如下所示:

class Util { 
     [Conditional ("DEBUG")]
     void Log (string msg)
     { 
         Console.WriteLine (msg);
     }
 }
Run Code Online (Sandbox Code Playgroud)

这可以让你编写如下代码:

 Util.Log ("Starting");
 DoSomething ();
 Util.Log ("Ending");
Run Code Online (Sandbox Code Playgroud)

如果定义了符号DEBUG,则上面的代码将编译三行,但如果未定义符号,则编译器将仅生成DoSomething的代码.

这使您可以将调试代码保存在程序中,并通过使用编译器定义来打开/关闭它.

然后将DEBUG添加为DEBUG配置文件的一个定义.相同的技术可以应用于其他配置构建,您可以使用上面的模拟器与设备或调试与AppStore与AdHoc