b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

查看崩溃日志

电脑杂谈  发布时间:2020-05-01 20:02:23  来源:网络整理

tomcat日志分类_windows日志事件编号分类_qq日志分类 名称

作为应用程序开发人员,您是否有以下经验?

为确保您的应用正确无误,必须先进行大量测试,然后才能将其提交到应用商店. 它也可以在您的设备上正常运行,但是进入应用商店后,仍然有用户抱怨它会崩溃!

如果您是像我这样的完美主义者,那么您肯定想使该应用程序完美. 因此,您打开了代码以解决闪回问题. 但是,您从哪里开始?

iOS崩溃日志现在派上用场了. 在大多数情况下,您可以了解有关闪回的详细且有用的信息.

通过本教程,您将学习一些常见的崩溃日志案例,以及如何从开发设备和iTunes Connect获取崩溃日志文件. 您还将学习有关符号化的知识,从日志跟踪到代码. 您还将学习调试将在挂起的情况下崩溃的应用程序.

开始吧!

什么是崩溃日志,我在哪里可以得到它?

当iOS设备上的应用程序崩溃时,操作系统会生成崩溃报告,也称为崩溃日志,保存在设备上.

崩溃日志上有很多有用的信息,包括应用程序崩溃的时间. 通常,每个执行线程都有完整的堆栈跟踪信息,因此您可以了解发生闪回时每个线程在做什么,并告诉您闪回发生在哪个线程上.

有几种方法可以从设备获取崩溃日志.

将设备与计算机上的iTunes Store同步后,崩溃日志将保存在计算机上. 取决于计算机操作系统,崩溃日志将保存在以下位置:

Mac OS X: 〜/库/日志/ CrashReporter / MobileDevice /

Windows XP: C: 文档和设置应用程序数据Apple ComputerLogsCrashReporterMobileDevice

Windows Vista或7: C: 用户 AppDataRoamingApple ComputerLogsCrashReporterMobileDevice

当用户抱怨闪回时,您可以要求他将设备与iTunes同步,根据操作系统将崩溃日志下载到上述位置,然后通过电子邮件发送给您.

您必须尝试获取由用户设备生成的所有崩溃日志. 因为崩溃日志越多,诊断问题就越容易!

此外,如果已安装Xcode,则还可以通过Xcode轻松地从设备获取崩溃日志. 将iOS设备连接到计算机,然后打开Xcode. 从菜单栏中选择“窗口”菜单,然后选择“管理器”(快捷方式为Shift-CMD-2).

在管理器窗口中,选择设备选项卡. 在左侧的导航面板上,选择“设备日志”,如下所示:

查看上图,左侧有几个“设备日志”菜单项. LIBRARY下的设备日志是您所有设备的日志(一旦连接到Xcode). 每个设备下的设备日志就是相应设备的日志.

将应用程序提交到App Store后,您还可以从iTunes Connect获取用户的崩溃日志. 登录到iTunes Connect,选择“管理您的应用程序”,单击相应的应用程序,单击该应用程序图标下的“查看详细信息”按钮,然后单击右列的“链接”部分中的“崩溃报告”.

如果没有崩溃日志,请单击“刷新”按钮尝试刷新. 如果您的应用程序仍然销售不多,或者在启动后不久,iTunes Connect帐户可能没有崩溃日志.

如果iTunes Connect上有崩溃日志,您将看到以下图片:

有时,尽管用户报告了崩溃,但是仍然看不到崩溃报告. 此时,最好让用户直接向您发送崩溃报告.

何时会生成崩溃日志?

两种主要情况会产生崩溃日志:

1. 该应用程序违反了操作系统规则.

2. 该应用程序中存在错误.

违反iOS规则包括启动,恢复,挂起和退出,用户强制退出以及内存不足终止期间的看门狗超时. 让我们仔细看看.

看门狗超时机制

从iOS 4.x开始,当您退出该应用程序时,该应用程序不会立即终止,而是会退出到后台. 但是,如果您的应用程序响应速度不够快,则操作系统可能会终止您的应用程序并生成崩溃日志. 这些事件对应于以下UIApplicationDelegate方法:

应用程序: didFinishLaunchingWithOptions:

applicationWillResignActive:

applicationDidEnterBackground:

applicationWillEnterForeground:

applicationDidBecomeActive:

applicationWillTerminate:

以上所有方法在有限的时间内完成处理. 如果花费的时间太长,操作系统将终止该应用程序.

注意: 如果不对后台线程进行长时间的操作(例如网络访问),则这种情况很容易发生. 有关如何避免这种情况的信息,请参阅我们的其他两个教程: Grand Central Dispatch和NSOperations.

用户强制注销

windows日志事件编号分类_tomcat日志分类_qq日志分类 名称

iOS 4.x支持多任务. 如果应用程序阻止了界面并停止响应,则用户可以通过双击主屏幕上的“主页”按钮来终止应用程序. 此时,操作应用程序将生成崩溃日志.

注意: 双击“主页”按钮后,您将看到所有已运行的应用程序. 这些应用程序不一定正在运行或暂停.

通常,当用户单击“主页”按钮时windows日志事件编号分类,应用程序将在后台停留约10分钟,然后操作系统将自动终止它. 因此,双击“主页”按钮将显示应用程序列表,该列表仅显示过去已打开的一系列应用程序. 删除这些应用程序的图标不会产生任何崩溃日志.

内存不足终止

子类化UIViewController时,您可能已经注意到didReceiveMemoryWarning方法.

在前台运行的应用在访问和使用内存方有最高级别的优化. 但是,这并不意味着应用程序可以使用设备的所有可用内存,每个应用程序只能使用部分可用内存.

当内存使用量达到一定水平时,操作系统将发出UIApplicationDidReceiveMemoryWarningNotification通知. 同时,调用didReceiveMemoryWarning方法.

这时,为了使应用程序继续正常运行,操作系统开始在后台终止其他应用程序以释放一些内存. 在终止所有后台应用程序之后,如果您的应用程序需要更多的内存,则操作系统还将终止您的应用程序并生成崩溃日志. 在这种情况下,终止的后台应用程序将不会生成崩溃日志.

注意: 根据Apple文档,Xcode不会自动添加低内存日志. 您必须手动获取日志. 但是,根据我的个人经验,使用Xcode 4.5.2也会自动导入低内存日志,但是“ Process”和“ Type”属性都标记为“未知”.

此外,值得一提的是,在很短的时间内分配很大的内存块将给系统内存带来巨大负担. 这样,还将生成内存警告通知.

应用程序中的错误

您认为,大多数闪回是由于应用程序中的错误所致,因此大多数崩溃日志均由应用程序中的错误所致. 错误类型很多.

在本教程的后半部分,您将学习如何查找问题并通过调试包含错误的应用程序来解决该问题,该应用程序将生成崩溃日志!

崩溃日志示例

让我们看一个崩溃日志的示例,以便您先处理一些实际问题.

结识新朋友还为时不晚:

此报告看起来像一本天堂之书. :)让我们从几个部分来解释它:

(1)流程信息

第一部分是有关闪回过程的信息.

事件标识符是崩溃报告的唯一标识符.

CrashReporter密钥是与设备ID相对应的唯一密钥值. 虽然它不是真实的设备标识符,但它也是非常有用的情报: 如果您看到100个Crash Reporter CrashReporter键值相同,或者只有几个不同的CrashReport值,则表明这不是常见的问题只发生在一个或几个设备上.

硬件型号标识设备类型. 如果许多崩溃日志来自同一设备类型,则意味着该应用程序仅在特定类型的设备上有问题. 在上面的日志中,崩溃日志生成的设备是iPhone 4s.

进程是应用程序名称. 方括号中的数字是闪回期间使用的应用程序的进程ID.

接下来的几行是不言自明的,不需要重复.

(2)基本信息

本节提供了一些基本信息,包括发生闪回的日期和时间以及该设备的iOS版本. 如果iOS 6.0中有很多崩溃日志,则意味着该问题仅在iOS 6.0上发生.

(3)异常

在这部分中,您可以看到闪回发生时引发的异常类型. 您还可以看到异常代码和引发异常的线程. 根据崩溃报告的类型,您还可以在此部分中看到一些其他信息.

(4)线程回溯

本节提供了应用程序中所有线程的回溯日志. 回溯是发生闪回时所有活动帧的列表. 它包含闪回发生时调用的功能列表. 查看下面的日志行:

它包括四列:

帧号-这里是2.

二进制库的名称-这里是XYZLib.

调用方法的地址-这里是0x34648e88.

第四列分为两个子列,一个基本地址和一个偏移量. 这是0×83000 + 8740,第一个数字指向文件,第二个数字指向文件中的代码行.

(5)线程状态

这部分是闪回期间寄存器中的值. 通常不需要这部分信息,因为信息的回溯部分足以让您发现问题.

(6)二进制图片

本节列出了闪回期间已加载的二进制文件.

符号化

windows日志事件编号分类_tomcat日志分类_qq日志分类 名称

当您第一次查看崩溃日志中的追溯时,您可能会认为这没有什么意义. 我们习惯于使用方法名称和行号,而不是像这样的神秘位置:

将这些十六进制地址转换为方法名称和行号的过程称为符号化.

从Xcode的Organizer窗口获取崩溃日志几秒钟后,崩溃日志将被自动符号化. 上面这一行的符号版本如下:

当Xcode表示崩溃日志时,您需要访问App Store上的相应应用程序二进制文件和生成二进制文件时生成的.dSYM文件. 必须完全匹配. 否则,日志将不会完全符号化.

因此,务必将每个编译的版本分发给用户. 在提交应用程序之前进行归档时,Xcode将保存应用程序的二进制文件. 所有已存档的应用程序文件都可以在Xcode Organizer的Archives标签下找到.

当发现崩溃日志时,如果存在匹配的.dSYM文件和应用程序二进制文件,则Xcode将自动象征崩溃日志. 如果您切换到另一台计算机或创建一个新帐户,请确保将所有二进制文件移到正确的位置,以便Xcode可以找到它们.

(注意: 您必须同时保留应用程序二进制文件和.dSYM文件,以完全表示崩溃日志. 提交到iTunes Connect的每个内部版本都必须存档.

.dSYM文件和二进制文件专门绑定到每个内部版本和后续内部版本. 即使它们来自同一源代码文件,每个内部版本也与其他内部版本不同,并且不能相互替换.

如果使用“生成”和“存档”命令,这些文件将自动放置在适当的位置. 如果不使用“构建”和“存档”命令,请将其放置在Spotlight可以搜索的位置(例如主目录). )

低内存闪回

由于低内存崩溃日志与普通崩溃日志略有不同,因此本教程专门对其进行单独说明.

当iOS设备检测到内存不足时,虚拟内存系统会发送一条通知,要求应用程序释放内存. 这些通知会发送到所有正在运行的应用程序和进程,以尝试回收一些内存.

如果内存使用率仍然很高,系统将终止后台线程以减轻内存压力. 如果有足够的可用内存,则应用程序将能够继续运行而不会生成崩溃报告. 否则,该应用程序将被iOS终止,并生成内存不足崩溃报告.

低内存崩溃日志上没有应用程序线程的堆栈跟踪. 相反,以上内容以内存页面为单位显示了每个进程的内存使用情况. (在撰写本文时,内存页面的大小为4KB. )

由于内存页的发布,您将看到由iOS终止的进程名称被抛弃. 如果您看到它出现在您的应用程序名称之后,则表明您的应用程序已终止,因为它使用了过多的内存.

低内存崩溃日志如下:

当应用程序因内存不足而崩溃时,您必须查看应用程序中的内存使用情况以及如何处理内存不足警告. 您可以在“工具”工具中使用“分配和泄漏”来发现内存分配问题和内存泄漏. 如果您不知道如何使用乐器来检查内存问题,可以看一下本教程.

此外,请不要忘记虚拟内存!仪器的泄漏和分配无法跟踪视频内存的使用情况. 您必须使用VM Tracker来查看视频内存使用情况.

VM Tracker默认情况下处于禁用状态. 打开仪器,手动选择“自动快照”徽标或按“立即快照”按钮.

在本教程的后面,您将学习如何研究内存不足崩溃日志.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-195623-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 杨晨
      杨晨

      我就是个不折不扣的犟种

    热点图片
    拼命载入中...