【问题标题】:symbolicatecrash doesn't like my dSYM filesymbolicatecrash 不喜欢我的 dSYM 文件
【发布时间】:2010-02-24 00:37:45
【问题描述】:

我正在尝试使用 symbolicatecrash,并获得了有趣的结果。一位同事在另一台机器上构建了我们的发行版,所以他给我发了 dSYM 文件。运行在

中找到的 symbolicatecrash 文件后

/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

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

dwarfdump --lookup 0x0001f892 --arch armv6 path/to/MyApp.app.dSYM

它正确地给了我那个单一呼叫的行号。此外,symbolicatecrash 能够从我们的代码中计算出游戏的行号,但不是 Apple 的。我不知道他为什么看不到 Apple 的东西,但这一切让我相信问题在于找到 dSYM,如前所述。

所以。有什么方法可以将 dSYM 的路径传递给 symbolicatecrash 命令,或者其他一些使它工作的方法?因为,说真的,制作一个对您的文件进行某种神奇“搜索”的工具是完全愚蠢的,只是因为它不想找到它。

另外,知道为什么我同事的构建不会显示 Apple 的任何功能吗? 当我在这里时,崩溃文件中的“+”是什么意思?像这样:

0x00059f8c -[UIWindow sendEvent:] + 108

【问题讨论】:

    标签: iphone crash-dumps symbolicatecrash


    【解决方案1】:

    symbolicatecrash 是一个巨大的 hack,你能做的最好的事情就是学习完全按照它对你的期望去做事情。或者阅读它的内部结构并修复它,但是你必须为下一次 SDK 更新重新修复它......

    在这种情况下,我认为您的问题是您没有将 dSYM 文件放在与应用程序包相同的文件夹中。它必须与 XCode 留下的完全一样,并且应该位于聚光灯可以找到它的位置。此外,请确保名称完全符合预期 - “dSYM”的大小写很重要,而且我听说由于错误,应用名称中不支持点。

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

    Apple 二进制文件没有行号信息,我个人非常高兴至少获得函数名称。可能会更糟。

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

    【讨论】:

    • 好答案。我只想指出,Apple 可能故意不在其二进制文件中包含此类信息(文件名和行号),原因是:他们不想泄露有关其源代码的任何额外信息。即使我们(开发人员)有可用的信息,我们将如何处理它?我们不能调试 Apple 的代码,所以知道文件名和行号是没有用的。
    猜你喜欢
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    相关资源
    最近更新 更多