gpt4 book ai didi

ios - 如何符号化Xcode崩溃日志?

转载 作者:行者123 更新时间:2023-11-29 05:55:29 30 4
gpt4 key购买 nike

Xcode 5 管理器有一个 View ,可以列出所有崩溃日志。我们可以将崩溃日志拖放到此处。但从 Xcode 6 开始,我知道他们已经将设备移出了组织,并为其提供了一个新窗口。但我没有找到一个地方可以查看我在升级到 Xcode 6 后拖放到 Xcode 5 中的崩溃日志。有人知道答案吗?

最佳答案

写这个答案既是为了社区,也是为了我自己。

如果存在象征崩溃报告的问题,可以通过以下方式解决它们:

  1. 创建一个单独的文件夹,将相应.xcarchive中的Foo.appFoo.app.dSYM复制到该文件夹​​中。同时将 .crash 报告复制到该文件夹​​中。

  2. 在 TextEdit 或其他地方打开崩溃报告,转到 Binary Images: 部分,然后复制其中的第一个地址(例如 0xd7000)。

  3. cd 进入文件夹。现在您可以运行以下命令:

    xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb

这将表示地址0x0033f9bb处的符号。请确保为 -arch 选项选择正确的值(可以从 Binary Images: 部分的第一行获取,或从 硬件型号: 在崩溃报告和应用程序支持的架构中)。

您还可以将崩溃报告中的必要地址(例如线程调用堆栈)直接复制到文本文件中(在 TextEdit 中,按住 Option 并选择必要的文本 block ,或复制并剪切),以获得类似以下内容:

0x000f12fb
0x002726b7
0x0026d415
0x001f933b
0x001f86d3

现在您可以将其保存到文本文件中,例如addr.txt,然后运行以下命令:

xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 -f addr.txt

这将为所有地址一次提供一个很好的符号。

附注

在执行上述操作之前,值得检查所有内容是否设置正确(因为 atos 会很高兴地报告基本上任何提供的地址的信息)。

要进行检查,请打开崩溃报告,然后转到线程 0 的调用堆栈末尾。倒数第一行列出您的应用程序(通常是第二行),例如:

34  Foo                    0x0033f9bb 0xd7000 + 2525627

应该是main()调用。如上所述对地址(在本例中为 0x0033f9bb)进行符号化应确认这确实是 main() 而不是某种随机方法或函数。

如果地址不是 main() 的地址,请检查您的加载地址(-l 选项)和 arch(-arch 选项)。

P.P.S.

如果由于位码原因上述方法不起作用,请从 iTunes Connect 下载适合您构建的 dSYM,从 dSYM 中提取可执行二进制文件(Finder > 显示包内容),将其复制到目录,并使用它(即 Foo)作为 atos 的参数,而不是 Foo.app/Foo

关于ios - 如何符号化Xcode崩溃日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55212107/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com