oracle 视图优点缺点,视图的优缺点1.怎样追踪app崩溃率。怎样解决线上闪退

1a9a87b6f849d900f780671ce9654690.png

当iOS设备上的App应用闪退时。操作系统会生成一个crash日志。保存在设备上。crash日志上有非常多实用的信息,比方每个正在运行线程的完整堆栈跟踪信息和内存映像,这样就能够通过解析这些信息进而定位crash发生时的代码逻辑,从而找到App闪退的原因。

违反iOS系统规则产生crash的三种类型

(1) 内存报警闪退

当iOS检测到内存过低时,它的VM系统会发出低内存警告通知,尝试回收一些内存;假设情况没有得到足够的改善,iOS会终止后台应用以回收很多其它内存;最后。假设内存还是不足,那么正在运行的应用可能会被终止掉。在Debug模式下,能够主动将client运行的动作逻辑写入一个log文件里,这样程序童鞋能够将内存预警的逻辑写入该log文件,当发生例如以下截图中的内存报警时,就是提醒当前client性能内存吃紧,能够通过Instruments工具中的Allocations 和 Leaks模块库来发现内存分配问题和内存泄漏问题。

(2) 响应超时

当应用程序对一些特定的事件(比方启动、挂起、恢复、结束)响应不及时。苹果的Watchdog机制会把应用程序干掉。并生成一份相应的crash日志。

这些事件与下列UIApplicationDelegate方法相相应。当遇到Watchdog日志时,能够检查上图中的几个方法是否有比较重的堵塞UI的动作。

application:didFinishLaunchingWithOptions:

applicationWillResignActive:

applicationDidEnterBackground:

applicationWillEnterForeground:

applicationDidBecomeActive:

applicationWillTerminate:

(3) 用户强制退出

一看到“用户强制退出”,首先可能想到的双击Home键,然后关闭应用程序。

只是这样的场景通常是不会产生crash日志的。由于双击Home键后,全部的应用程序都处于后台状态,而iOS随时都有可能关闭后台进程,当应用堵塞界面并停止响应时这样的场景才会产生crash日志。这里指的“用户强制退出”场景。是略微比较复杂点的操作:先按住电源键,直到出现“滑动关机”的界面时。再按住Home键,这时候当前应用程序会被终止掉,而且产生一份相应事件的crash日志。

应用逻辑的Bug

大多数闪退崩溃日志的产生都是由于应用中的Bug,这样的Bug的错误种类有非常多,比方

SEGV:(Segmentation Violation,段违例),无效内存地址,比方空指针。未初始化指针,栈溢出等;

SIGABRT:收到Abort信号,可能自身调用abort()或者收到外部发送过来的信号;

SIGBUS:总线错误。与SIGSEGV不同的是,SIGSEGV访问的是无效地址(比方虚存映射不到物理内存),而SIGBUS访问的是有效地址,但总线访问异常(比方地址对齐问题)。

SIGILL:尝试运行非法的指令,可能不被识别或者没有权限;

SIGFPE:Floating Point Error,数学计算相关问题(可能不限于浮点计算),比方除零操作;

SIGPIPE:管道还有一端没有进程接手数据。

常见的崩溃原因基本都是代码逻辑问题或资源问题,比方数组越界。访问野指针或者资源不存在。或资源大写和小写错误等。

crash的收集

假设是在windows上你能够通过itools或pp助手等辅助工具查看系统产生的历史crash日志,然后再依据app来查看。假设是在Mac 系统上。仅仅须要打开xcode->windows->devices。选择device logs进行查看,例如以下图,这些crash文件都能够导出来,然后再单独对这个crash文件做处理分析。

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-76433-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值