当前位置: 首页 > news >正文

靠谱的深圳app开发公司/seo需要什么技术

靠谱的深圳app开发公司,seo需要什么技术,wordpress登录密码记录在哪里,云服务器使用教程如何获得crash日志当一个iOS应用程序崩溃时,系统会创建一份crash日志保存在设备上。crash日志记录着应用程序崩溃信息,通常包含着每个执行线程的栈调用信息(低内存闪退日志例外),对于开发人员定位问题很有帮助。   如果设备就在身边&#x…
  1. 如何获得crash日志

  当一个iOS应用程序崩溃时,系统会创建一份crash日志保存在设备上。crash日志记录着应用程序崩溃信息,通常包含着每个执行线程的栈调用信息(低内存闪退日志例外),对于开发人员定位问题很有帮助。   如果设备就在身边,可以连接设备,打开Xcode - Window - Organizer,在左侧面板选择Device Logs(可以选择具体设备Device Logs或者Library下所有设备Device Logs)。然后根据时间排序查看crash日志。这是开发、测试阶段常用的方式。   如果应用程序已经提交App Store发布,用户已经安装使用,那么开发者可以通过iTunes Connect(Manage Your Applications - View Details - Crash Reports)获取用户crash日志。不过大多数发者并不依赖于此。因为这需要用户设备上同意上传相关信息。考虑并不是所有iPhone用户都允许发送诊断报告(crash日志),而且对于部分提交Apple的crash日志,开发者需要手动拉取,然后找到对应符号文件进行解析——这是一件繁琐的事情。所以实际项目中,通常接入现有的crash收集工具,或者自己编写一个进行自动化收集、解析和统计汇总。

 
    2. 如何解析crash日志
  当获得一份crash日志,我们需要将初始展示的十六进制地址等原始信息映射为源代码级别的方法名称和代码行数,使其对开发人员可读,这个过程称为符号化解析。要成功符号化解析日志,需要有对应应用程序二进制文件及符号(.dSYM)文件。
    若处于开发调试阶段,通常Xcode都能匹配到crash日志对应的二进制文件和符号文件,所以能够帮我们自动解析。若处于测试阶段,测试人员已经安装不同版本(比如alpha、beta版本),那么需要保存好对应版本的二进制文件和符号文件,以便在应用程序崩溃是对crash日志进行解析。对于这种场景产生的crash日志,只需要将.crash文件、.app文件和.dSYM文件三者放在同一个目录下,然后将.crash文件拖放到Xcode - Window - Organizer中左侧面板Library下Device Logs中,即可进行解析。如果要提交发布,那么通常会先执行Clean,再Build,最后通过Product - Archive来打包。这样,Xcode会将二进制文件和符号文件归档在一起,可以通过Organizer中的Archives进行浏览。  3. 如何分析crash日志
       crash日志的产生来源于两种问题:违反iOS策略被干掉,以及自身的代码bug。3.1. iOS策略
  3.1.1 低内存闪退前面提到大多数crash日志都包含着执行线程的栈调用信息,但低内存闪退日志除外,这里先看看低内存闪退日志是什么样的。我们使用Xcode 5和iOS7的设备模拟一次低内存闪退,然后通过Organizer查看产生的crash日志,可以发现Process和Type都为Unknown。而具体的日志内容如下:第一部分是崩溃信息,包括识别标识、软硬件信息和时间信息等。第二部分是内存页分配信息,以及当前占用内存最多的进程,上图中为crashTypeDemo。第三部分是具体的进程列表,描述着每个进程使用内存的情况以及当前状态。在较早的版本中可以在某些进程后面看到“jettisoned”字样,表明这些进程使用过多内存被终止了,而现在我们看到的是“vm-pageshortage”字样。当iOS检测到内存过低时,它(的VM系统)会发出低内存警告通知,尝试回收一些内存;如果情况没有得到足够的改善,iOS会终止后台应用以回收更多内存;最后,如果内存还是不足,那么正在运行的应用可能会被终止掉。所以,我们的应用应该合理地响应系统抛出来的低内存警告通知,对一些缓存数据和可重新创建的对象进行释放,同时要避免出现内存泄露等问题。低内存闪退是由iOS策略决定终止应用程序运行的,同样基于iOS策略的还有Watchdog超时和用户强制退出。3.1.2 Watchdog超时Apple的iOS Developer Library网站上,QA1693文档中描述了Watchdog机制,包括生效场景和表现。如果我们的应用程序对一些特定的UI事件(比如启动、挂起、恢复、结束)响应不及时,Watchdog会把我们的应用程序干掉,并生成一份响应的crash报告。这份crash报告的有趣之处在于异常代码:“0x8badf00d”,即“ate bad food”。如果说特定UI事件较抽象,那么用代码来直接描述,对应的就是(创建一个工程时Xcode自动生成的)UIApplicationDelegate的几个方法。所以当遇到Watchdog日志时,可以检查下上图几个方法是否有比较重的阻塞UI的动作。QA1693举的例子是在主线程进行同步网络请求。如果我们是在公司的Wifi环境下使用则一切顺利,但当应用程序发布出去面向很大范围的用户,在各种网络环境下运行,则不可避免地会出现一片Watchdog超时报告。另一种可能出现问题的场景就是数据量比较大的情况下进行的数据库版本迁移(同样是在主线程上),这也是促使我写这篇总结的一个直接因素。3.1.3 用户强制退出一看到“用户强制退出”,首先可能想到的双击Home键,然后关闭应用程序。不过这种场景是不会产生crash日志的,因为双击Home键后,所有的应用程序都处于后台状态,而iOS随时都有可能关闭后台进程,所以这种场景没有crash日志。另一种场景是用户同时按住电源键和Home键,让iPhone重启。这种场景会产生日志(仅验证过一次),但并不针对特定应用程序。这里指的“用户强制退出”场景,是稍微比较复杂点的操作:先按住电源键,直到出现“滑动关机”的界面时,再按住Home键,这时候当前应用程序会被终止掉,并且产生一份相应事件的crash日志。通常,用户应该是遇到应用程序卡死,并且影响到了iOS响应,才会进行这样的操作——不过感觉这操作好高级,所以这样的crash日志应该比较少见。3.2. 常见错误标识3.2.1 Exception codes“用户强制退出”的crash日志中的Exception Codes是“0xdeadfa11”,再上面“Watchdog超时”的crash日志中的Exception Codes是“0x8badf00d”,这些都是特有的Exception codes。根据官方文档描述,至少有以下几种特定异常代码:0x8badf00d错误码:Watchdog超时,意为“ate bad food”。0xdeadfa11错误码:用户强制退出,意为“dead fall”。0xbaaaaaad错误码:用户按住Home键和音量键,获取当前内存状态,不代表崩溃。0xbad22222错误码:VoIP应用(因为太频繁?)被iOS干掉。0xc00010ff错误码:因为太烫了被干掉,意为“cool off”。0xdead10cc错误码:因为在后台时仍然占据系统资源(比如通讯录)被干掉,意为“dead lock”。3.2.2 Exception types查看我们的crash分析报告邮件,会发现最经常遇到的错误类型是SEGV(Segmentation Violation,段违例),表明内存操作不当,比如访问一个没有权限的内存地址。当我们收到SIGSEGV信号时,可以往以下几个方面考虑:访问无效内存地址,比如访问Zombie对象;尝试往只读区域写数据;解引用空指针;使用未初始化的指针;栈溢出;此外,还有其它常见信号:SIGABRT:收到Abort信号,可能自身调用abort()或者收到外部发送过来的信号;SIGBUS:总线错误。与SIGSEGV不同的是,SIGSEGV访问的是无效地址(比如虚存映射不到物理内存),而SIGBUS访问的是有效地址,但总线访问异常(比如地址对齐问题);SIGILL:尝试执行非法的指令,可能不被识别或者没有权限;SIGFPE:Floating Point Error,数学计算相关问题(可能不限于浮点计算),比如除零操作;SIGPIPE:管道另一端没有进程接手数据;3.3. 代码bug此外,比较常见的崩溃基本都源于代码bug,比如数组越界、插空、多线程安全性、访问野指针、发送未实现的selector等。如果引入Core Data,则又有另外一些常见问题,不过这是另一个话题了。遇到这些bug时,都有比较清楚的错误原因说明,比如“index 0 beyond bounds for empty 
array”等。需要稍微注意点的是多线程问题,当一时找不到解决思路时,不妨往多线程方面考虑下。

转载于:https://www.cnblogs.com/111testing/p/8278046.html

http://www.jmfq.cn/news/5217553.html

相关文章:

  • 商务网站需求说明书/武汉seo管理
  • 网站做问卷调查的问题/seo 推广
  • php手机网站模板/武汉网站设计十年乐云seo
  • 做防水怎么注册网站/网络推广优化品牌公司
  • 网站建栏目建那些/灰色产业推广引流渠道
  • 网站编辑主要做什么/网站排名提高
  • 攻击网站的方法/室内设计培训哪个机构比较好
  • jeecms做企业网站/螺蛳粉的软文推广
  • 公司网站推广是做什么/推广软件赚钱的平台
  • 中小型网站建设行情/自助建站系统平台
  • 广安建设企业网站/最好用的搜索引擎排名
  • 短视频营销成功案例/长沙优化网站厂家
  • 广东网站建设服务供应商/网络推广怎么做方案
  • 做装饰画的行业网站/企业管理软件排名
  • 经销商怎么做网站/关键词优化一般收费价格
  • 莱州唯佳网络科技有限公司/广东短视频seo营销
  • 微信怎么做网站/百度竞价推广代理
  • 免费网站建设培训学校/互联网营销师培训课程免费
  • 济南网站建设哪家公司好/简单制作html静态网页
  • 北京市建设教育协会网站查询/北京seo全网营销
  • 设计素材网站会员哪个最好/电商网络销售是做什么
  • 中国品牌网官方网站/南昌网站开发公司
  • wordpress还能用/广州seo
  • 网站做301顶级域名需要绑定/宁波seo哪家好快速推广
  • 嵌入式培训机构排名前十/seo免费优化网站
  • 运营策划/seo推广方式是什么呢
  • 芜湖网站设计/关键字搜索引擎
  • 网站头条怎么做/江苏网站推广
  • 网站建设温州科目一/seo网站外链平台
  • 免费加速器看国外网站/百度竞价怎么排名第一