iOS 应用程序在没有调试信息和日志消息的情况下退出的问题

Posted

技术标签:

【中文标题】iOS 应用程序在没有调试信息和日志消息的情况下退出的问题【英文标题】:Problems with iOS app quitting with no debug info and no log messages 【发布时间】:2011-07-11 03:04:28 【问题描述】:

我在这里有一个应用程序,它可以归结为带有可以快速浏览的图像的 uiscrollviews。不过,我在这里遇到了一些非常奇怪的事情。

在浏览每张图片(总共大约有 60 张)时,应用有时会退出。我在 XCode 4(GM 种子 2)中运行它,我没有得到任何调试信息,控制台中也没有任何消息。开启了 NSZombieEnabled,但这并没有改变任何东西。

我什至没有在设备上获得崩溃日志。我已经通过仪器运行它,它没有报告任何泄漏,并且在设备上运行时我的内存使用量在 700 到 1100KB 之间。

我什至检查了我的每个“页面”(您浏览的那些)并在 init 和 dealloc 中添加了消息,我可以确认它们都被正确地释放了(只保留当前页面和两边的页面已加载)。

现在,这似乎主要发生在应用程序中的同一点,当我从头开始并向右滑动每一页时,加上或减去几页,都指向内存问题,我确实得到了来自设备的内存警告,但绝对没有任何迹象表明我使用了大量内存,也没有任何泄漏。

当应用退出时,我从设备上的控制台得到了这个:

3 月 8 日 14:13:37 未知 configd[26]:jetsam:内核内存事件 (92),空闲:451,活动:2894,非活动:2267,可清除:0,有线:16709

3 月 8 日 14:13:37 未知 configd[26]:jetsam:正在创建内核终止快照

3 月 8 日 14:13:37 未知 com.apple.launchd[1] : (com.apple.AOSNotification) Exited: Killed: 9

3 月 8 日 14:13:37 未知 com.apple.launchd[1] : (UIKitApplication:com.apple.mobilemail[0xc2ee]) Exited: Killed: 9

3 月 8 日 14:13:37 未知 com.apple.launchd[1] : (UIKitApplication:no.NRC.NRCMag[0x3c6c]) 退出:杀死:9

3 月 8 日 14:13:37 未知 com.apple.launchd[1] : (com.apple.dataaccess.dataaccessd) Exited: Killed: 9

3 月 8 日 14:13:37 未知 SpringBoard[30]:收到内存警告。等级=1

3 月 8 日 14:13:37 未知 SpringBoard[30]:应用程序“透视”异常退出,信号 9:已终止:9

3 月 8 日 14:13:38 未知 SpringBoard[30]:应用程序“邮件”异常退出,信号 9:已终止:9

3 月 8 日 14:13:38 未知 SpringBoard[30]:内存水平不正常 (60%)。将“邮件”的自动重新启动延迟 30 秒。

3 月 8 日 14:13:38 未知 SpringBoard[30]:收到内存警告。等级=2

3 月 8 日 14:13:38 未知内核 [0]:launchd[1253] 内置配置文件:dataaccessd(沙盒)

3 月 8 日 14:13:39 未知 AOSN[1252]:AOSNotification 守护进程正在启动...

3 月 8 日 14:13:39 未知 AOSN[1252]:设备信息。名称:Calypso,BuildVersion:8F190,产品类型:iPad1,1,唯一设备 ID:f02b304ed9a62109de1f3efd3e1e23158a76b2d4

3 月 8 日 14:13:40 未知 ReportCrash[1254]:使用 uid:0 gid:0,synthetic_euid:0 egid:将 crashreport 保存到 /Library/Logs/CrashReporter/LowMemory-2011-03-08-141339.plist: 0

3 月 8 日 14:13:40 未知 SpringBoard[30]:收到内存警告。等级=1

3 月 8 日 14:13:40 unknown dataaccessd[1253] : DA|已注册唤醒通知

3 月 8 日 14:13:40 未知 AOSN[1252]:推送:加载中...

Mar 8 14:13:41 unknown profiled[1257] : profiled|服务开始...

3 月 8 日 14:13:41 未知数据访问 [1253]:EAS|EAS 协议管理器设置为 ASProtocolUnknown

3 月 8 日 14:13:41 unknown dataaccessd[1253] : CalDAV|触发了刷新,但我们仍在等待网守锁定

3 月 8 日 14:13:42 未知数据访问 [1253]:EAS|EAS 协议管理器设置为 ASProtocol12_1

现在这里提到了一个崩溃报告,但是当它没有出现在 XCode 的 Organizer 中时,我该如何获取它?为什么当 Instruments(以及彻底查看我的代码)说我没有使用太多内存,也没有泄漏时,我会收到内存警告?

救命!

编辑:在这里启动并运行 3.2.6,控制台现在给了我这个:

节目接收信号:“0”。

数据格式化程序暂时不可用,将在“继续”后重试。 (加载共享库“/Developer/usr/lib/libXcodeDebuggerSupport.dylib”时出现未知错误)

【问题讨论】:

唯一可以合法提出 XCode4 问题的地方是devforums.apple.com/community/xcode4 这不是一个真正的 XCode4 问题。 :) 当我有更多数据时,我的应用程序中遇到了同样的问题 【参考方案1】:

好的,所以我在这里想通了,有点傻。

我使用 UIImage 的 imageNamed 方法来加载每个图像/页面,显然这导致了内存警告。

这有几件事让我有点困扰。

    缓存显然是件好事,但显然在 4.3 GM 中,当出现内存警告时,它似乎并没有真正清空缓存。 我的应用没有报告内存使用量增加。

【讨论】:

我得到了同样的行为(没有警告,没有日志但应用程序退出)......我在某些时候使用 UIImage ......但我该怎么做才能做到解决问题 ?我没有使用 imageNamed 方法! 我遇到了同样的问题

以上是关于iOS 应用程序在没有调试信息和日志消息的情况下退出的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 9(APPS/PC 日志记录)上启用推送状态消息?

从 xcode 运行的 iOS 应用程序向我显示一条消息以启用调试日志记录

禁用 CloudKit 调试日志

iOS 应用程序在使用 XCode 调试器启动时崩溃,在没有调试器的情况下运行良好

在lldb调试中调用c++函数 - 如何使用QuartzCore里面的日志消息

Log4j - 如何在没有其他详细信息的情况下仅将我的消息日志写入文件