我正在尝试使用 symbolicatecrash,并获得有趣的结果。一位同事在另一台机器上构建了我们的发行版,所以他给我发了 dSYM 文件。运行在中找到的 symbolicatecrash 文件后
/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash
它填补了所有苹果的功能,但不是我的。问题似乎是它无法(或不会)找到 dSYM 文件,可能是因为其中包含我同事的机器信息。当我从崩溃报告中复制十六进制地址时,我可以像这样使用 dwarfdump:
dwarfdump --lookup 0x0001f892 --arch armv6 path/to/MyApp.app.dSYM
它正确地为我提供了该单个呼叫的行号。此外,symbolicatecrash 能够从我们的代码中计算出游戏的行号,但不是 Apple 的。我不知道他为什么看不到 Apple 的东西,但这一切让我相信问题在于找到 dSYM,如前所述。
所以。有什么方法可以将 dSYM 的路径传递给 symbolicatecrash 命令,或者其他一些使它工作的方法?因为,说真的,制作一个对你的文件进行某种神奇“搜索”的工具是完全愚蠢的,只是因为它不想找到它而找不到它。
另外,知道为什么我同事的构建不会显示 Apple 的任何功能吗?当我在这里时,崩溃文件中的“+”是什么意思?像这样:
0x00059f8c -[UIWindow 发送事件:] + 108