位置: 编程技术 - 正文
推荐整理分享手游频繁崩溃”闪退”? 从程序上找原因(手游频繁崩溃怎么解决),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:手游频繁崩溃怎么回事,手游一直闪退什么原因,手游频繁崩溃怎么回事,手游频繁崩溃怎么解决,手游频繁崩溃怎么解决,手游频繁崩溃怎么回事,手游频繁崩溃怎么回事,手游频繁崩溃怎么办,内容如对您有帮助,希望把文章链接给更多的朋友!
(2) 响应超时 当应用程序对一些特定的事件(比如启动、挂起、恢复、结束)响应不及时,苹果的Watchdog机制会把应用程序干掉,并生成一份相应的crash日志。这些事件与下列UIApplicationDelegate方法相对应,当遇到Watchdog日志时,可以检查上图中的几个方法是否有比较重的阻塞UI的动作。 application:didFinishLaunchingWithOptions: applicationWillResignActive: applicationDidEnterBackground: applicationWillEnterForeground: applicationDidBecomeActive: applicationWillTerminate: (3) 用户强制退出 一看到“用户强制退出”,首先可能想到的双击Home键,然后关闭应用程序。不过这种场景一般是不会产生crash日志的,因为双击Home键后,所有的应用程序都处于后台状态,而iOS随时都有可能关闭后台进程,当应用阻塞界面并停止响应时这种场景才会产生crash日志。 这里指的“用户强制退出”场景,是稍微比较复杂点的操作:先按住电源键,直到出现“滑动关机”的界面时,再按住Home键,这时候当前应用程序会被终止掉,并且产生一份相应事件的crash日志。 1.2应用逻辑的Bug 大多数闪退崩溃日志的产生都是因为应用中的Bug,这种Bug的错误种类有很多,比如 SEGV:(Segmentation Violation,段违例),无效内存地址,比如空指针,未初始化指针,栈溢出等; SIGABRT:收到Abort信号,可能自身调用abort()或者收到外部发送过来的信号; SIGBUS:总线错误。与SIGSEGV不同的是,SIGSEGV访问的是无效地址(比如虚存映射不到物理内存),而SIGBUS访问的是有效地址,但总线访问异常(比如地址对齐问题); SIGILL:尝试执行非法的指令,可能不被识别或者没有权限; SIGFPE:Floating Point Error,数学计算相关问题(可能不限于浮点计算),比如除零操作; SIGPIPE:管道另一端没有进程接手数据; 常见的崩溃原因基本都是代码逻辑问题或资源问题,比如数组越界,访问野指针或者美术资源不存在,或美术资源大小写错误等,这种问题的类型有很多,不再详细介绍。 二.crash的收集 上文提到crash日志是操作系统层产生并保存在设备上的,那如果我的一台设备在运行某App的时候crash了,可以通过什么方式拿到crash日志呢。如果是在windows上你可以通过itools或pp助手等辅助工具查看系统产生的历史crash日志,然后再根据app来查看。如果是在Mac 系统上,只需要打开xcode->windows->organizer->devices,选择device logs进行查看,如下图,这些crash文件都可以导出来,然后再单独对这个crash文件做处理分析。 以上这些是针对能够拿到真机设备的情况下才能收集crash日志的。如果是针对玩家的话,当App在玩家的设备上crash的时候如何收集呢。先来看下市场上已有的商业软件提供crash收集服务,他们这些软件基本都提供了日志存储,日志符号化解析和服务端可视化管理等服务: Crashlytics (www.crashlytics.com) Crittercism (www.crittercism.com) Bugsense (www.bugsense.com) TestFlight (www.testflightapp.com) HockeyApp (www.hockeyapp.net) Flurry(www.flurry.com) 具体这些商业软件有哪些优缺点,有人做了如下统计:标签: 手游频繁崩溃怎么解决
本文链接地址:https://www.jiuchutong.com/biancheng/372809.html 转载请保留说明!友情链接: 武汉网站建设