0

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

该应用程序似乎已启动。带有一些 ui 元素的主屏幕在屏幕上变得可见。然后它消失了。

在设备上找不到崩溃日志。

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

调试当然是启用的。

探查器仪器也是如此。

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

它确实在模拟器上工作。

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

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

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

对不起,很长的文字。我试图把所有可能重要的东西都放进去。

4

1 回答 1

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 中。

于 2014-11-04T08:23:39.223 回答