2009-01-09 47 views

回答

17

我很确定NSLog()调用将被写入系统控制台日志,所以如果你离线后将你的iPhone连接到你的计算机上,你应该能够查看XCode Organizer中的控制台日志。唯一需要注意的是控制台日志的大小是有限的,所以如果你做了大量的日志记录,那么较旧的条目可能会被忽略。

+0

良好的调用 - 我是iPhone开发的新手,我知道如何看到NSLog()的输出的唯一方法是在调试器控制台中。 – 2009-01-09 19:21:34

28

下面的方法将在您的应用程序的Documents文件夹中创建一个文件名“console.log”,以便您稍后可以读取它。

呼叫你的程序的开头此方法:

- (void) redirectConsoleLogToDocumentFolder 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"]; 
    freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr); 
} 

日志永远不会被删除,所以请谨慎使用。

一旦您在现场测试了您的应用程序,请在Xcode中将您的手机重新连接到Mac,然后打开管理器。在摘要面板中,您可以看到手机上所有应用程序的列表。展开你正在调试的那个,你会看到一个名为“Application Data”的包。

点击其名称右侧的箭头并保存。 你将以一个包含你的Bundle Identifier名称和一个日期的文件夹结束。

这个文件夹,你会发现你的文档文件夹,它应该包含的console.log

+0

如果你关心日志的大小,一个小小的改变就是在freopen()中将“a +”改为“w”。但是这会产生另一个警告,请务必在程序运行之间获取此文件,因为每次程序运行时都会从头开始重新创建此文件(这可能与“太大”文件一样是一个阻碍) – KevinDTimm 2010-01-09 17:13:30

+0

谢谢:)可以将de log记录到文件并同时在xcode控制台上显示NSLog? – 2012-05-17 10:55:19

2

马克Novakowski里面是正确的。控制台输出会在手机上登录,当您将Mac连接到手机时,控制台输出在管理器窗口中可用。

只需在设备面板中选择您的手机,然后选择控制台选项卡即可。最近的控制台输出将在那里。很酷。

我刚刚明白了这一点。这在你描述你需要远离计算机的情况下会非常有用。

顺便说一句,我有一个解决方案,您需要测试弱WiFi信号。只需用铝箔包裹手机,USB电缆从铝箔包装纸上伸出即可。如果您正在使用它进行连接,则可以单步执行调试器中的代码。您无法操作用户界面,但可以降低/消除3D,WiFi和GPS等无线电信号。如果您想降低信号强度但不能完全取消信号强度,则可能需要尝试用箔片部分覆盖手机,在覆盖物上放置小孔等。

一个警告:不要让手机缠绕一次放入箔中超过几分钟。它可能会过热。

5

App Store中还有一个Console应用程序,但它仅适用于iOS 6及更早版本。

当iOS 7出来时,it effectively stopped working。 (它现在只能读取自己的控制台日志,而不能读取整个系统的日志。)

相关问题