1.自己先写一个 Demo 演示一下利用bugly测试崩溃的具体情况。 
在ViewController里面实现崩溃代码如下: 

运行后 毫无疑问程序报错了!

2.使用到第三方的框架Bugly,官方下载bugly 
3.进入后利用qq注册一下,完整一下相应的个人信息。

4.进入后注册一下你要测试的app,我创建的app demo叫CocoaPodText如下。

5.利用CocoaPods集成 Bugly框架,详情见本人博客关于CocoaPods的配置使用,只需要pod Bugly如图。 

6.接下来回到项目中,在 AppDelegate.m 中引入Bugly/Bugly.h,和代理BuglyDelegate,初始化 Bugly等。

appid获取处: 

7.完成代理方法: 

8.接下来运行,点击button崩溃后可以打印出出错信息。刷新bugly上你的app异常日志上报界面如图(此截图我是测试了两处bug后的异常情况截图): 

点击进去详情: 

到这里你会发现这个日志中的崩溃点虽然定位到具体某一个文件中的某一个方法,但是具体到某一行似乎并没有实现。不着急慢慢来。。。 
这需要另外一个概念:符号表。点击进去你的崩溃详情中回发现有那么一个东西如下: 

符号表: 
没有符号表,我们就无法定位崩溃中的符号对应的代码所在的类以及类中的行数位置。我们在每次构建版本、debug的时候,都会生成dSYM后缀名的符号表文件,而我们App在手机上运行的时候,崩溃后产生的崩溃信息,不可能定位到代码的多少多少行,因为这些信息对于App运行是没有意义的,存储在App中势必会增大安装包的体积,所以App的崩溃信息都是存储为各种符号,具体符号代表什么,需要去符号表中查找对应的含义。 
  我们每次debug、构建版本,都会生成dSYM文件,都对应了一个UUID(像我们的手机一样,都有一个唯一标志),按下图指示,我们就能找到我们所使用的App版本对应的dSYM文件的UUID,通过这个UUID,我们就能找到存储在我们电脑中的dSYM文件,将这个文件上传到bugly,bugly会自动帮我们找到崩溃符号的含义。 
   
  1)接下来 你可以根据官方给的如何上传符号表来完成。我也是根据文档中关于自动配置自动配置:XCode + sh脚本来实现的,下载好配置文件如下: 
  

  
  2)配置Xcode编译执行脚本在Xcode工程对应Target的Build Phases中新增Run Scrpit Phase 
  

  
  3)打开工具包中的dSYM_upload.sh,复制所有内容,在新增的Run Scrpit Phase中粘贴 
4)修改新增的Run Scrpit中的App ID,App Key,App的Bundle Id等。 
5)脚本默认在Debug模式及模拟器编译情况下不会上传符号表,在需要上传的时候,请修改下列选项 
Debug模式编译是否上传,1=上传 0=不上传,默认不上传 
UPLOAD_DEBUG_SYMBOLS=0 
模拟器编译是否上传,1=上传 0=不上传,默认不上传 
UPLOAD_SIMULATOR_SYMBOLS=0 
如下: 

至此,自动上传符号表脚本配置完毕,Bugly 会在每次 Xcode 工程编译后自动完成符号表配置工作。

当你再次刷新你的bugly界面时,闪崩的行号自动变更为正常在项目中对应的行号: 
一下是我配置的另一个项目中的结果展示: 
第一个图中代码部分501行明确可以看出来数组越界的问题,输出部分标号3也定位到是tableView的点击方法里面,但是后面的352缺并不是代表行号。所以通过符号表脚本配置,我们可以看到第二张图中明确的闪崩行号501.

发现里面的异常情况说得很详细,主要还根据异常情况给出了相应的解决方案,这一点很棒。

本人觉得这个bugly比友盟统计中的异常调试更方便全面。

iOS之利用腾讯Bugly程序调试,测试代码bug、卡顿等情况的更多相关文章

  1. 利用WinDbg找出程序崩溃的代码行号

    之前碰到论坛里有几个好友,说程序不时的崩溃,什么xxoo不能read的! 如果光要是这个内存地址,估计你会疯掉~~ 所以分享一下基本的调试技巧,需要准备的工具有WinDbg + VC6.0, 下面是自 ...

  2. 程序员减少代码BUG的7种方法,拒绝编程5分钟,查代码2小时!

    0.别对警告视而不见 相信不少的程序员会使用IDEA,使用它敲代码,有时候会出现警告,那么这时你对警告就不能视而不见了. 我们的目标是,写干净的代码,做风一样的男子! 1.编程习惯 种瓜得瓜种豆得豆, ...

  3. 如何使用Xcode调试Shader代码Bug导致的渲染问题

    我最近发现了一个与Unity中的表面着色器有关的小Bug. 你可以看到如下所示的渲染瑕疵. 有时人们会将相似的渲染瑕疵归因于同时使用HDR和Bloom效果,但实际上,表面着色器是错误的,至少在本文中所 ...

  4. ios 页面过长卡顿的情况

    解决方案如下: -webkit-overflow-scrolling: touch;

  5. 转: 腾讯Bugly干货分享:Android应用性能评测调优

    转:http://www.kuqin.com/shuoit/20150618/346693.html?utm_source=www.race604.com 前言 在智能手机App竞争越来越激烈的今天, ...

  6. Windows程序卡顿、无响应问题定位

    当windows程序出现异常.界面卡顿.无响应情况时,在有工程和源码的情况下,程序员通常是打开IDE,在DEBUG模式下进行调试.但如果是一个RELEASE程序,且无调试环境,该如何来定位呢. 这里介 ...

  7. iOS应用千万级架构:性能优化与卡顿监控

    CPU和GPU 在屏幕成像的过程中,CPU和GPU起着至关重要的作用 CPU(Central Processing Unit,中央处理器) 对象的创建和销毁.对象属性的调整.布局计算.文本的计算和排版 ...

  8. 【腾讯Bugly干货分享】iOS黑客技术大揭秘

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5791da152168f2690e72daa4 “8小时内拼工作,8小时外拼成长 ...

  9. 【腾讯Bugly经验分享】程序员的成长离不开哪些软技能?

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ce8068d4d44a246f72baf2 Dev Club 是一个交流移动 ...

随机推荐

  1. Android ImageSpan的使用

    编辑框中加图片 代码如下: mSubjectDetailView = (TextView) findViewById(R.id.subject_detail); CharSequence text = ...

  2. Windows系统环境下安装dlib

    Windows系统环境下安装dlib 因为今天需要在windows环境下做一些图片处理,所以需要在pycharm中配置环境,而其中需要的主要是dlib的安装: 下面说一下关于dlib的配置安装: —- ...

  3. 中间件(WAS、WMQ)运维 9个常见难点解析

    本文由社区中间件达人wangxuefeng266.ayy216226分享整理,包括WAS.WMQ在安装.巡检.监控.优化过程中的常见难点. 安装 1.was 负载均衡的机制的粘连性,was负载均衡异常 ...

  4. 译文 [ROM][多国语言][2015.06.11] Lenovo S750 (MTK6589) - andrea_d86-lenovos750-4.2.2

    ************************************************** andrea_d86-lenovos750-4.2.2-150530 ************** ...

  5. VS编译报错Error2019

    1.对项目右键,属性,链接器,常规,附加库目录,查看lib的路径是否填全了,写对了. 2.是否对项目添加引用.

  6. 解决网卡无法自动获取ip的办法

    解决网卡无法自动获取IP址的方法          为了省钱或者一户多机,很多人都购买宽带路由器共享上网.在架设路由上网的时候,有些“师傅”可能不懂或是偷懒,开启了宽带路由器的DHCP( Dynami ...

  7. EXCHANGE 2013 TLS传输层安全

    默认情况下,SMTP流量是不被加密的,这就导致在公网上进行邮件沟通就像是在广播一样,任何人拦截到该邮件都可以轻而易举的读取其内容.但是现实场景中有许多敏感信息是通过邮件来进行发送的,所以其中一种保护邮 ...

  8. MySQL 数据库 -- 操作

    初识sql语句 有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写. SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开 ...

  9. TCP/IP 协议图--网络层中的 IP 协议

    IP(IPv4.IPv6)相当于 OSI 参考模型中的第3层——网络层.网络层的主要作用是“实现终端节点之间的通信”.这种终端节点之间的通信也叫“点对点通信”. 网络的下一层——数据链路层的主要作用是 ...

  10. TCP/IP 协议图--TCP/IP 基础

    1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议.实际生活当中有时也确实就是指这两种协议.然而在很多情况下,它只是利用 IP 进行通信时所 ...