美文网首页
iOS的bug调试

iOS的bug调试

作者: 彩虹下的笑颜 | 来源:发表于2019-05-21 15:29 被阅读0次

    一、查看Crash Report

    1. 通过Xcode的Devices中把crash日志导出来:


      image.png
    2. 查看dSYM 文件,一般查看友盟的dSYM 文件。


      image.png
    3. 这里可以看出这个错误的原因是数组越界了,那么问题来了,我们并不知道是哪里越界,上面只给出了一个内容地址:
    6   YHRSS                        0x100041378 YHRSS + 267128
    
    • 步骤1:


      image.png
    • 步骤2:


      image.png
    • 步骤3:


      image.png

      我们 cd 到该文件目录下,然后执行:
      atos -arch arm64 -o YHRSS 0x1000420b0
      注意这里的 -arch 是和上面 crash 报告中的对应,否则是看不到相应的信息的:

    specialized YHArticlesViewController.tableView(_:heightForRowAt:) (in YHRSS) (YHArticlesViewController.swift:215)
    

    这样我们能就精准地获取 crash 出现的具体位置,然后就该是发挥自我价值的时候了。

    二、p po断点查看

    image.png

    三、Time Profiler

    time profile 是时间分析工具,主要用来检测应用 CPU 的使用情况,可以看到应用程序中各个方法消耗 CPU 时间。关于概念,这里就不详细介绍了,直接进行实际操作:
    1. 通过 xcode 中的 product --> profile 来启动 Instrument,并选择 Time Profiler 工具:


      image.png
    2. 运行 Time Profiler,配置显示方式,分线程显示和隐藏系统的无关内容:


      image.png
    3. 在手机上执行想要测试的操作,执行完后停止 Time Profiler 进行分析:


      image.png
    4. 找到主要耗时的地方,并定位到具体的代码行(点击方法的小箭头就可以进入相应的代码处):


      image.png
    • 这里可以看出,主要有两一个耗时的操作,但明显后面那我格式转换我们没有办法去处理,我们只能从第一个入手。它每次创建都比较耗时,那么我们就不要多次去创建,因为它每次使用的格式的都是一样的,这样我们实质上只需要创建一次就可以了。那我们有什么方法去只创建一次呢,首先能想到的肯定是单例,但是用单例太麻烦了,通过 static 定义成一个常量就可以了,就这样,这处的性能问题就解决了,其它地方也可以通过同样的方法,逐步分析和解决就可以了。

    相关文章

      网友评论

          本文标题:iOS的bug调试

          本文链接:https://www.haomeiwen.com/subject/ttjjzqtx.html