iOS崩溃日志打印到控制台

时间:2013-02-20 08:17:03

标签: iphone ios xcode debugging

我的问题出现在推出iOS 6时,但现在似乎也影响了5.1.1。

当应用程序崩溃时,日志将打印到“控制台”,并且不会保存“设备日志”。这在很多方面令人沮丧:

  • 控制台视图太短,我只能看到日志的尾部,
  • 复制/粘贴无效,保存到文件...生成垃圾,无法使用,
  • 没有办法保存日志,象征它或做任何事情。

值得一提的是,我们使用附件并且无法同时连接调试器。

如何解决这个问题可以节省我的一天,但任何体面的解决方案都会很好。

谢谢

编辑:'控制台'和'设备日志'是我在组织者中获得的。

2 个答案:

答案 0 :(得分:0)

我所知道的最简单的方法需要一点点设置。设置完成后,即使重启时间也可以访问完整日志,您可以将其保存以供日后使用。

你需要一个越狱设备。在Cydia中安装名为syslogd to /var/log/syslogOpenSSH的软件包。按照Cydia开始页面上的OpenSSH教程(中间一半)。 syslogd - 包没有教程,但安装过程是相同的。安装syslogd后重启设备。

日志将写入/var/log/syslog。使用开发用户终端上的ssh登录设备并查看/拖尾日志。您可以scp将日志返回到开发计算机,也可以使用Cyber​​Duck或类似设备将其从设备中取出。

日志的大小会增加,我不确定是否存在限制,因此请密切关注文件大小。友好的

> /var/log/syslog

不时应该这样做。

PS:Cydia上还有一个MobileTerminal包。它允许您直接从设备查看日志,而无需从第二台计算机进行ssh进入

答案 1 :(得分:0)

在最新版本的iOS中,以下内容对我有用......

//This method will be invoked before crash occurs
 void onUncaughtException(NSException* exception)
 {
      //Print whatever you want to print before, I have print the info from exception
      MDDDebugLog(@"Reason for crash : %@", [exception reason]);
      MDDDebugLog(@"Name of the crash : %@", [exception name]);
      MDDDebugLog(@"Stack trace of the crash: %@", [exception   callStackSymbols]); 
 }

//Print crash log in file

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //Assign a method which will be invoked before crash occurs
      NSSetUncaughtExceptionHandler(&onUncaughtException); 
  }