【问题标题】:iOS crash logs printed to consoleiOS 崩溃日志打印到控制台
【发布时间】:2023-04-01 08:35:01
【问题描述】:

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

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

  • 控制台视图太短,我只能看到日志的尾部,
  • 复制/粘贴不起作用,保存到文件...产生垃圾,无法使用,
  • 无法保存日志、对其进行符号化或执行任何操作。

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

如何解决这个问题的想法可以节省我的时间,但任何体面的解决方法也很好。

谢谢

编辑:“控制台”和“设备日志”是我在管理器中获得的。

【问题讨论】:

  • 按 cmd+7,您将获得所有构建的历史记录。在这里您可以看到您需要的日志消息。
  • 但仅当调试器在执行期间连接时。这对我没有帮助。
  • 谢谢,但这是用来查看我崩溃日志的地方,但现在不能了。

标签: iphone ios xcode debugging


【解决方案1】:

我知道的最简单的方法是需要进行一些设置。设置完成后,即使重新启动后,您也可以访问完整的日志,并且可以保存以供日后使用。

您需要一个越狱设备。在 Cydia 中安装名为 syslogd to /var/log/syslog 和 OpenSSH 的软件包。遵循 Cydia 起始页上的 OpenSSH 教程(下半部分)。 syslogd-package 没有教程,但安装过程是一样的。安装syslogd后重启设备。

日志写入/var/log/syslog。从开发 Mac 上的终端使用ssh 登录设备并查看/跟踪日志。您可以scp 将日志返回到您的开发机器,或者可以使用 Cyber​​Duck 或类似工具将它们从设备中删除。

日志会变大,我不确定是否有限制,所以请留意文件大小。友好的

> /var/log/syslog

应该不时做。

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

【讨论】:

  • 我想避免越狱公司的设备,但我现在看不到任何其他方式。由于没有更好的答案,我会接受这个。谢谢。
【解决方案2】:

在最新版本的 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); 
  }

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    相关资源
    最近更新 更多