代码之家  ›  专栏  ›  技术社区  ›  Eli

SymbolicateCrash不喜欢我的dsym文件

  •  3
  • Eli  · 技术社区  · 15 年前

    我正在尝试使用符号化崩溃,并获得有趣的结果。一个同事在另一台机器上构建了我们的发行版,所以他给我发送了dsym文件。运行中找到的SymbolicateCrash文件后

    /developer/platforms/iphoneos.platform/developer/library/privateframeworks/dtdevicekit.framework/versions/a/resources/symbolicatecrash

    它填充了所有的苹果功能,但不是我的。问题似乎是它找不到(或不会)DSYM文件,可能是因为其中包含我同事的机器信息。当我从崩溃报告中复制十六进制地址时,我可以像这样使用dwarfdump:

    dwarfdump--查找0x0001f892--arch armv6路径/to/myapp.app.dsym

    它正确地给了我那个电话的线路号。此外,SymbolicateCrash可以从我们的代码中计算出游戏的行号,但不是苹果的。我不知道他为什么看不到苹果的东西,但所有这些都让我相信问题在于找到DSYM,如前所述。

    所以。是否有任何方法可以将dsym的路径传递给symblicatecrash命令,或者其他方法使其工作?因为,说真的,制作一个对你的文件进行某种魔法“搜索”的工具是完全愚蠢的,只是因为它不想找到它。

    还有,你知道为什么我的同事的构建不会显示苹果的任何功能吗? 当我在这里的时候,“+”在崩溃文件中是什么意思?这样地:

    0x00059F8C-[UIWindow发送事件:]+108

    1 回复  |  直到 15 年前
        1
  •  6
  •   DenNukem    15 年前

    象征性的崩溃是一个巨大的黑客,你能做的最好的就是学会按照它对你的期望去做。或者读取它的内部结构并修复它,但是在下一次SDK更新时,您必须重新修复它…

    在这种情况下,我认为您的问题是您没有将dsym文件与应用程序包放在同一个文件夹中。它必须和Xcode完全一样,而且应该在聚光灯可以看到的地方。此外,请确保名称与预期完全一致-“dsym”的准确大小写非常重要,我听说由于一个错误,应用程序名称中不支持任何点。

    如果有疑问,请始终尝试-v选项以获得更详细的错误消息。

    苹果的二进制文件没有行号信息,我个人非常高兴至少能得到函数名。可能更糟。

    在“—[uiwindow sendevent:+108”中,表示从函数开始的108字节。对这些数据唯一有用的解释是,如果数字很小,它很可能是准确的,如果数字很大,你的符号就不正常了。