【问题标题】:___lldb_unnamed_function in a symbolicated crash log___lldb_unnamed_function 在符号化崩溃日志中
【发布时间】:2013-12-14 13:30:27
【问题描述】:

我有一个在 iPhone OS 7.0.4 上生成的崩溃日志。我有适当的 .app 和 .dSYM 文件。当我用 Xcode 5 表示崩溃日志时,它会显示如下内容:

Thread 0 Crashed:
0   MyProject          0x001df98a ___lldb_unnamed_function6108$$MyProject + 42
1   MyProject          0x001e0c49 ___lldb_unnamed_function6119$$MyProject + 9
2   MyProject          0x002928d5 ___lldb_unnamed_function8439$$MyProject + 13
3   MyProject          0x0027fa1f ___lldb_unnamed_function8072$$MyProject + 287
4   MyProject          0x0028e657 ___lldb_unnamed_function8368$$MyProject + 27
5   MyProject          0x002888d1 ___lldb_unnamed_function8257$$MyProject + 201

当我用 Xcode 4 符号化崩溃日志时,它会产生正确的结果 - 它会显示我的应用程序中发生崩溃的类和方法。堆栈跟踪中不涉及匿名块。

Xcode 4 和 Xcode 5 为何会产生不同的符号化崩溃日志?当我在详细模式下运行 symbolicatecrash 脚本时,它显示两个 Xcode 的相同结果:它们匹配正确的 .app 和 .dSYM 文件,并且都以这些行结束:

done.
1 binary images were found.
Running /Applications/Xcode.app/Contents/Developer/usr/bin/atos -arch armv7 -l 0xd1000 -o '<PATH>/MyProject.app/MyProject' 0x002928d5 0x002888d1 0x001e0c49 0x0027fa1f 0x000d8f27 0x001df98a 0x0028e657 | 
got symbolicator for <PATH>/MyProject.app/MyProject, base address 4000

【问题讨论】:

  • xcrun -f atos 是否显示正确的最新 Xcode 安装路径?
  • @Kerni 是的,我在 Xcode 5 是单个 Xcode 安装的机器上对其进行了测试。还有一台带有 Xcode 4 和 5 的机器,xcrun 也显示了 Xcode 5 的路径。

标签: ios xcode xcode4 xcode5 crash-log


【解决方案1】:

我遇到了同样的问题,并通过从iOS crash reports: atos not working as expected post 计算 ___lldb_unnamed_function 的地址来解决它。

运行之后:

xcrun atos -arch armv7(s) -o Xyz.app.dSYM/Contents/Resources/DWARF/xyz Calculated_Address

【讨论】:

    【解决方案2】:

    我在使用 xcode 5 进行符号化时也遇到了问题

    所以我求助于使用 atos 手动符号化我的符号。

    atos -arch armv7 -o myApp.app/myApp 0x178e9e
     -- 
    Warning: /usr/bin/atos is moving and will be removed from a future OS X release.
    It is now available in the Xcode developer tools to be invoked via: `xcrun atos`
    To silence this warning, pass the '-d' command-line flag to this tool.
     -- 
    AFJSONEncode (in myApp) + 434
    

    警告看起来很有趣,所以我决定尝试 xcrun atos

    xcrun atos -arch armv7 -o myApp.app/myApp 0x178e9e
    ___lldb_unnamed_function6926$$myApp (in myApp) + 434
    

    这给了我一个未命名的函数。

    所以我的猜测是 Xcode 5 使用的是 xcrun atos,它有一个错误。

    使用 atos 确实帮助我诊断问题并修补修复。我没有安装 Xcode 4。也许您可以验证 Xcode 4 是否产生与 atos 相同的结果?我按照question中的说明进行操作

    我很乐意编写一个脚本来象征崩溃日志:/

    【讨论】:

    • 我不得不使用arm64 来强制为所有手臂类别构建符号。在我这样做之前,它给出了错误错误“未找到 armv7”,因为我的 dylib 包含所有拱门的符号。
    【解决方案3】:

    您必须已经使用 xcode 4.6 创建了构建,并且您现在可能已升级到 xcode 5。您需要将您的 xcode 开发者目录设置为 xcode 4.6 开发者目录才能正常工作。

    【讨论】:

      【解决方案4】:

      正如我在 Cannot replicate Apple iOS app review crash 的 cmets 中发现的那样,Xcode 5.1 的测试版解决了这个问题。我现在从我的崩溃报告中得到了正确的符号。

      【讨论】:

        【解决方案5】:

        当我在iOS 5 设备(如original iPad)上调试我们的应用程序时忘记退出Spark Inspector 时遇到了此类问题。

        【讨论】:

          【解决方案6】:

          在崩溃日志中有相同的 ___lldb_unnamed_function 符号。

          您可以从发生崩溃的KSCrash(第三方 iOS 崩溃报告器)获取实际的类和方法。
          也支持未捕获的 C++ 异常!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-09
            • 2018-03-19
            • 1970-01-01
            相关资源
            最近更新 更多