应用程序在调试器可以连接之前崩溃

时间:2014-11-03 09:48:59

标签: ios xcode6.1

我甚至在调试器连接之前就有一个崩溃的应用程序。 我在main()的第一行放置了一个断点。 (我在main()中添加了一个NSLog语句作为第一个语句,并在那里设置了断点。

该应用似乎已经开始了。具有一些ui元素的主屏幕在屏幕上变得可见。然后它就消失了。

设备上没有找到崩溃日志。

Xcode消息: 无法启动" appname" 进程启动失败:无法获取进程xyz的任务

当然启用调试。

剖析仪器也是如此。

代码签名工作正常,以便可以将应用程序部署到设备。 (对于企业分发也是如此。应用程序验证商店提交。)

它确实可以在模拟器上运行。

该应用程序曾经工作正常。我正准备为商店建造它。对于iOS 8.1的最终测试,我使用SDK 8.1升级到Xcode 6.1。但问题并没有在升级后直接发生。它运作得很好。

然后在构建企业分发版本时崩溃了。 AppStore版本以相同的方式崩溃(根据Apple的说法,该应用程序当然被拒绝了。) 但它在调试模式下运行良好。 现在我正在尝试用于优化的编译器选项是否会产生重大影响,我试图在启用调试的情况下构建发布模式等,并最终导致调试版本崩溃。 (在调试中没有优化)。

所以很可能迁移到Xcode 6.1确实导致了它,但只有在Xcode清理并重建项目以响应代码优化的编译器设置更改之后,问题才会生效。

抱歉这篇长篇文章。我试图将所有内容都放在可能很重要的地方。

1 个答案:

答案 0 :(得分:0)

原因很可能是Crackify和iOS 8.1之间的某些不兼容性。

因此,对其他人可能有兴趣,尽管我的问题以及这些症状可能非常特殊。

AppDelegate didFinishLaunchingWithOptions的早期,我们有以下声明。

if ([Crackify isCracked] || [self isCertificateUnvalid])
   exit(173);

因此,设计并不是很好。该应用程序刚刚终止,而不是显示给用户的任何错误消息。因此,似乎应用程序崩溃了。但它没有崩溃,因此没有提供崩溃日志。

由于我还不了解并且可能与此错误无关的原因,我的调试器无法连接到已执行的应用程序。一旦克服(突然调试器工作而没有对任何调试相关设置进行任何更改),错误很快就找到了。

这是Crackify:https://github.com/itruf/crackify 在Crackify中,这个代码片段导致了这个问题:

static NSString *str2 = @"ResourceRules.plist";
BOOL fileExists3 = [manager fileExistsAtPath:([NSString stringWithFormat:@"%@/%@", bundlePath, str2])];
if (!fileExists3) {
  return YES;
}

由于我没有进一步调查的原因,此处测试的文件显然在iOS 8.1中不再存在。