美文网首页
Xcode 性能调试 Instrument只有地址显示,关联不了

Xcode 性能调试 Instrument只有地址显示,关联不了

作者: 纸简书生 | 来源:发表于2017-10-15 11:00 被阅读314次

    在做iOS性能调优的时候,肯定会用到Instrument。之前都用得好好的,可以定位到具体的代码段执行了多长时间。但这次抽风似的,无论如何都不能再Xcode看到源码。网上也没找到很好的解决方法。

    原理

    只有知道了原理我们才可能找到解决办法。为什么在Instrument能够统计代码执行的时间,消耗的资源等等。根本原因在于DSYM文件。

    dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件。简单来讲dSYM是我们打的包和源代码之间的桥梁,通过dSYM我们能够查到崩溃日志对应哪几行,执行对应是哪段代码。

    顺便说说Xcode中的Organize。如果设备打开了日志收集功能,我们可以看到里面的崩溃信息,点击右边的Open in Project,可以直接定位到崩溃代码位置。


    这里的原理同样是DSYM文件起的作用,每次发布release包,都会生成一个dsym文件。路径是:~/Library/Developer/Xcode/Archives

    显示*.xarchive包内容就能看到如下内容。

    解决办法

    知道了原理就容易找到解决问题的办法。

    一、确保生成了dsym文件

    在buildsetting 里面找到Debug Information Format,看看是否是如下设置

    二、自定义dsym文件、二进制文件搜索路径

    如果上面的方法还是不能解决,那就得用这种方法。

    这个问题也是很奇葩,我是在Xcode9中发现这个问题,猜测跟自己之前改变了Derived Data的路径,导致Xcode找不到对应的路径有关。现在只需要设置好路径即可,不过这步骤也是有点麻烦。

    • 点击Record
    • 关闭Record、打开File、选择Symbol
    • 查看路径

    很明显可以看到这里的路径不对,是红色的,也就是没找到。

    • 设置好对应的路径

    这里举个例子。找到*.app对应二进制文件路径,*.app.dsym对应dsym路径

    然后在重新Record。之后就能看到了人头像了

    扩展阅读

    dSYM 文件分析工具
    instrument Time Profiler总结

    相关文章

      网友评论

          本文标题:Xcode 性能调试 Instrument只有地址显示,关联不了

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