Objective-C iPhone: 我们可以在设备上查看控制台日志吗?

30

有没有一种方法可以在运行iPhone应用程序时查看控制台输出?如果没有直接的方法,是否有一个App Store上的应用程序可以在应用程序运行结束后查看日志?


根据开发者的博客,他使用asl函数来访问日志,网址在这里http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man3/asl.3.html。 - progrmr
2
从iOS 7.0开始,应用程序沙盒现在禁止访问除应用程序之外的任何日志:通过此Stack Overflow答案(当使用设备上的应用程序查看设备日志时也可以亲自观察到)。 - cbowns
3个回答

21

更新到使用Xcode 12.5.1和Console 1.1:

在Xcode中,转到“窗口” ->“设备和模拟器”,选择您的设备,然后按“打开控制台”按钮。

或者直接按cmd + space键- >输入“控制台”,然后按Enter键。

在控制台应用程序中,从左窗格中选择您的设备,然后按“开始流式传输”。

输入图像描述


您还可以在“设备”窗口中查看。

进入xcode ->窗口 ->设备。

选择您的设备并打开控制台。输入图像描述


3
不符合问题要求。OP询问如何在设备上查看控制台内容;这个回答使用需要使用Xcode的开发电脑。请重新翻译。 - Slipp D. Thompson
这在Xcode 6中在哪里? - ToddB
1
在 Xcode 6 中 -> 窗口 -> 设备 -> 选择设备 -> 在左下角有一个小箭头 /\, 点击它,会弹出设备控制台。 - MujtabaFR
获取iSyslog。适用于iOS7和iOS8。在任何设备上本地运行(iPhone,iPod Touch,iPad)。无需越狱。 - Karoly Nyisztor
@KarolyNyisztor iSyslog 目前似乎不可用。 - ThomasW
@ThomasW 是的,花了一些时间,但是苹果最终关闭了允许该应用程序访问系统日志的安全漏洞。 - Karoly Nyisztor

6
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *fileName =[NSString stringWithFormat:@"%@.log",[NSDate date]];

NSString *logFilePath = [documentsDirectory stringByAppendingPathComponent:fileName];

freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);

只需在应用程序代理文件的applicationdidFinishLaunchingWithOptionslaunchOptions方法中添加此代码块,它将在iPhone上的应用程序文档目录中创建一个日志文件,记录所有控制台日志事件。您需要从iTunes导入此文件才能查看所有控制台事件。

不要忘记在您的属性列表中将“应用程序支持iTunes文件共享”设置为“YES”

前往-iTunes-连接设备时-应用程序-选择您的应用程序-在Augument Document中,您将获得您的文件,然后保存到您的磁盘中


谢谢,但我找不到应用程序文档目录,请你帮我找一下那个 .log 文件以便从 iTunes 导入。 - prabhu
似乎在iTunes 12中,我们不能再从文档目录导入文件了。现在一切都是iCloud。用户如何获取此日志文件? - Robert Wasmann
我使用Xcode 7.3和iTunes 12.3.3.17没有问题。 - goelectric

2

如果您有付费的iPhone开发者账户,您可以使用Xcode中的组织器窗口来查看您设备上的控制台和应用程序日志。


1
哦,那不是问题...我正在开发一个基于位置的应用程序,需要在我的iPhone上运行。在一只手拿着MacBook,另一只手拿着iPhone,这有点麻烦。有没有“设备上的日志查看器”? - user315067
1
你可以让你的应用程序使用NSLog输出想要查看的数据,并稍后使用组织器查看它。我认为除非你添加自己的UI来打印输出,否则无法在设备上实时查看它。 - Jorge Cohen
1
-1 不回答问题。OP要求在设备上查看控制台内容;这种方法使用带有Xcode的开发计算机。 - Slipp D. Thompson

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