美文网首页
Xcode自带的线上崩溃收集

Xcode自带的线上崩溃收集

作者: 默默_David | 来源:发表于2020-09-06 12:22 被阅读0次

构建应用程序以包含调试信息

Building Your App to Include Debugging Information

构建应用程序以包含调试信息

配置Xcode以生成用于调试和崩溃报告的符号信息。

概述

当Xcode将源代码编译成机器代码时,它会在APP类名、全局变量、方法和函数名中生成一个符号列表。这些符号对应于定义它们的文件和行号;这种关联会创建一个调试符号,因此您可以在Xcode中使用调试器,或者引用崩溃报告报告的行号。默认情况下,应用程序的调试版本将调试符号放在编译后的二进制文件中,而应用程序的发布版本会将调试符号放在相应的调试符号文件(dSYM)中,以减小发布版本APP包的体积。

APP中的每个二进制文件(主应用程序可执行文件、framworks和app extensions)都有自己的dSYM文件。编译后的二进制文件及其配套的dSYM文件由一个构建UUID绑定在一起,这个UUID由构建的二进制文件和dSYM文件记录。如果您使用相同的源代码构建两个二进制文件,但是使用不同的Xcode版本或构建设置,那么这两个二进制文件的构建uuid将不匹配。二进制文件和dSYM文件只有在具有相同的构建uuid时才彼此兼容。保留好构建和分发的dSYM文件,并在诊断崩溃报告中的问题时使用它们。

使用符号信息构建应用程序

在构建用于分发的应用程序之前,请验证您的构建设置是否会生成必要的dSYM文件,以便在发布应用程序后诊断崩溃。

这些dSYM文件是最常见的符号文件类型,您在发布应用程序后调试它时需要它。向应用商店提交带有bitcode构建的APP有第二种类型的符号文件,即bitcode符号映射(bcsymbolmap)。当打包一个APP开启了bitcode,Xcode会将应用程序dSYM文件中的符号替换为混淆符号,如_hidden#109,以保护符号名的隐私。bcsymbolmap文件将dSYM文件中的这些隐藏符号名称转换回原始调试符号名称,您可以将其与代码匹配。如果您选择在不提供符号的情况下将应用程序上载到app Store,Xcode将从上传中排除bcsymbolmap文件,仅将模糊的符号名称发送到App Store。APP的真实符号名在你的电脑上仍然是本地的。

注意

位码不适用于macOS和Mac Catalyst APP。

发布带有符号信息的应用程序

在打包一个发布IPA时,Xcode会收集应用程序的所有二进制文件和dSYM文件,并将它们存储在Xcode存档中。

如果您通过App Store分发应用程序或使用TestFlight进行beta测试,则可以选择在将应用程序上载到app Store Connect时包含符号文件。你需要在你的构建中上传符号,这样应用商店就可以将你的应用程序的符号名称添加到崩溃报告中,然后再将它们交付给Xcode中的崩溃管理器。如果上载到App Store时不包括符号,则仍然可以通过崩溃管理器接收崩溃报告,但不包括符号名称。如果Mac上有正确的dSYM文件,Xcode会将符号名添加到这些崩溃报告中。有关如何使用dSYM文件处理崩溃报告,请参阅使用崩溃报告和设备日志诊断问题。

拓展

要使用Xcode自带的各种线上调试,必须用户同意share crash and usage data with developers.

  • 符号管理器

Window > Organizer > 选中对应的APP构建包 > 在上方选择Crashes

符号管理器

从上图中,我们发现,bug可以直接定位到代码位置中

  • 能量管理器

Window > Organizer > 选中对应的APP构建包 > 在上方选择Energy

能量管理器
  • 查看崩溃或能源报告
image image
  • 查看能源管理检查器
image image

重要提示

您必须为您分发的应用程序的每个版本保留Xcode存档。如果没有此存档,您可能无法从崩溃报告中诊断问题。

相关文章

  • Xcode自带的线上崩溃收集

    构建应用程序以包含调试信息 Building Your App to Include Debugging Info...

  • iOS原生崩溃异常收集

    使用苹果自带的崩溃收集 1、崩溃报告系统会用NSSetUncaughtExceptionHandler方法设置全局...

  • 常见的崩溃问题

    首先说一下 检查崩溃的工具 1.xcode自带的 用于检测App Store版本 xcode -- Window ...

  • Xcode常用目录

    iOS程序员经常需要使用到的目录来调试程序 Xcode调试崩溃日志目录:可以查看Xcode帮我们收集运行崩溃信息 ...

  • 2019-04-22

    关于处理线上bug一些小笔记 1、使用xcode自带的线上bug记录信息的功能 步骤1:使用打开xcode->wi...

  • symbolicatecrash 分析crash文件

    1、symbolicatecrash 是xcode自带的崩溃分析工具 路径:打开终端 输入: find /Appl...

  • 线上崩溃的解决办法

    开发过程中对于线上项目崩溃我使用的是友盟统计,它会收集到线上的崩溃日志,根据崩溃日志我们可以快速定位到代码中崩溃位...

  • iOS崩溃日志收集与解析

    收集crash日志方式 1.设备上直接查看 2.xcode获取设备上信息 3.xcode获取发布版本崩溃信息 下图...

  • 使用NSSetUncaughtExceptionHandler收

    1. 在代码中添加手机崩溃日志代码 2. 收集到的崩溃日志如下 dSYM符号表获取 xcode->window->...

  • Android 全局捕获异常信息

    都遇到过APP使用崩溃的情况,尤其是在线上的崩溃,我们无法看到崩溃信息,此时就需要对崩溃信息进行收集。之前用的都是...

网友评论

      本文标题:Xcode自带的线上崩溃收集

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