iphone - symbolicatecrash 不喜欢我的 dSYM 文件

标签 iphone crash-dumps symbolicatecrash

我正在尝试使用symbolicatecrash,并得到了有趣的结果。一位同事在另一台机器上构建了我们的发行版,因此他向我发送了 dSYM 文件。运行后发现的symbolicatecrash文件

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

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

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

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

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

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

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

最佳答案

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

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

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

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

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

关于iphone - symbolicatecrash 不喜欢我的 dSYM 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2322880/

相关文章:

winapi - MiniDumpWriteDump 并为同一个崩溃写入多个转储?

crash - 我的应用程序崩溃并在 Windows 事件日志中留下条目。接下来做什么?

ios - 我的 iOS 应用程序持续崩溃,无法找到它

ios - 不同的崩溃报告但相同的崩溃?

ios - 符号化 iPhone KSCrash JSON 报告

iphone - iOS获取jpg文件的宽高

ios - 无法从处理程序访问类中存在的变量

iphone - MKPolygon 触摸细节 View

iphone - 不使用IAP构建IOS应用向卖家收费

Android dumpstate分析