symbolicatecrash不喜欢我的dSYM文件

时间:2010-02-24 00:37:46

标签: 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 path / to / MyApp.app.dSYM

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

因此。有没有办法将dSYM的路径传递给symbolicatecrash命令,或者其他一些使其工作的方法?因为,严肃地说,制作一个为你的文件做某种神奇的“搜索”的工具是完全愚蠢的,但却找不到它,因为它不想这样做。

另外,任何想法为什么我的同事的版本不会显示Apple的任何功能? 虽然我在这里,崩溃文件中的“+”是什么意思?像这样:

0x00059f8c - [UIWindow sendEvent:] + 108

1 个答案:

答案 0 :(得分:6)

symbolicatecrash是一个巨大的黑客,你能做的最好的事情就是学会完全按照你的期望做事。或者阅读它的内部并修复它,但是你必须重新修复它以进行下一次SDK更新...

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

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

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

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