在生产环境中使用数据集debugging应用程序的任何方式?

Production Environment我的CloudKit数据集比Development还要大一些,其他的奇异的差异也可能存在。

在生产模式下使用我的应用程序有一个讨厌的僵局 。 是否有可能以任何方式debugging客户端? 或者我应该尽可能多地login并发送出去?

这是一个线程问题,所以如果不检查Xcode中的线程,实际上是要做任何事情。 任何想法? 我正在使用核心数据本地存储。

  1. 在源代码中回滚更改,以便能够运行应用程序。
  2. 将生产环境中的logging同步到本地核心数据存储。
  3. 在Xcode设备菜单中从容器中复制sqlite数据库。
  4. 用相同的模型创build一个临时项目,用数据库填充它。
  5. 设置临时项目以使用以前的CloudKit容器。
  6. 在仪表板中重置开发环境。
  7. 从临时项目上传所有logging。
  8. 用原始源代码运行原始项目。

我会build议使用崩溃报告服务。 虽然这里有几个选项,但是我和Crashlytics一起工作,对他们提供的报告感到非常满意,总是帮助我修复生产中的错误。

当应用程序将进入后台,在某些时候它将被iOS杀死,因为你的线程不会回应到-applicationDidEnterBackground ,然后你将得到所有线程的回溯。

如果你想有一个更好的机会触发kill(如果locking的线程不是主线程),你可以在你的工作线程中获取一个后台任务( - beginBackgroundTaskWithExpirationHandler: :如果他们在某个时刻被locking,他们将永远不会释放后台任务,他们会触发杀手。

现在只需等待iOS调度程序杀死你的应用程序,并抓取堆栈跟踪。 在那里,你应该能够通过查看所有线程的回溯来find罪魁祸首,并确定哪些locking在互斥锁()函数中。

我敢打赌,你甚至不需要象征性的。