我的问题在引入 iOS 6 时出现,但现在似乎也影响了 5.1.1。
当应用程序崩溃时,日志会打印到“控制台”,并且不会保存“设备日志”。这在很多方面令人沮丧:
- 控制台视图太短,我只能看到日志的尾部,
- 复制/粘贴不起作用,保存到文件...产生垃圾,无法使用,
- 没有办法保存日志、对其进行符号化或做任何事情。
值得一提的是,我们使用配件,无法同时连接调试器。
一个如何解决这个问题的想法可以节省我的时间,但任何体面的解决方法也会很好。
谢谢
编辑:“控制台”和“设备日志”是我在管理器中得到的。
我知道的最简单的方法需要一些设置。设置完成后,您将可以访问完整的日志,即使在重新启动时也是如此,您可以将其保存以备后用。
你需要一个越狱的设备。在 Cydia 中安装名为syslogd to /var/log/syslog和的软件包OpenSSH。遵循 Cydia 起始页上的 OpenSSH 教程(下半部分)。-packagesyslogd没有教程,但安装过程是一样的。安装后syslogd重启设备。
日志被写入/var/log/syslog. 从开发 Mac 上的终端使用ssh登录设备并查看/跟踪日志。您可以scp将日志返回到您的开发机器,或者可以使用 CyberDuck 或类似工具将它们从设备中删除。
日志会变大,我不确定是否有限制,所以请注意文件大小。友善的
> /var/log/syslog
时不时应该做的。
PS:Cydia 上也有一个MobileTerminal包。它将允许您直接从设备查看日志,而无需从第二台计算机 ssh'ing
在最新版本的 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);
}