我想尝试和象征我的iPhone应用程序的崩溃报告。

我从iTunes Connect上找到了崩溃报告。我有提交给App Store的应用程序二进制文件,我有作为构建的一部分生成的dSYM文件。

我将所有这些文件放在一个目录中,该目录以spotlight为索引。

现在该做什么?

我试着引用:

symbolicatecrash crashreport.crash myApp.app.dSYM

它只输出与崩溃报告开始时相同的文本,没有符号。

我做错什么了吗?


当前回答

在我的例子中,我直接将崩溃报告从Mail拖到Organizer。出于某种原因,这阻止了坠机报告被符号化(我很想知道为什么)。

首先将崩溃报告复制到桌面,然后将它们从桌面拖动到管理器,这样它们就被正确地符号化了。

我知道,这是非常具体的案例。但以防万一,还是分享一下吧。

其他回答

在最新版本的Xcode(3.2.2)中,你可以拖拽任何崩溃报告到Xcode管理器的设备日志部分,它们会自动为你标记。我认为如果你使用Build & Archive(也是Xcode 3.2.2的一部分)构建那个版本的应用程序,这是最好的工作方式

我喜欢使用Textwrangler来精确定位原始应用程序上传二进制拒绝中的错误。(崩溃数据将在你的itunesConnect账户中找到。)使用上面萨钦的方法,我复制了原文。崩溃到TextWrangler,然后复制符号崩溃文件,我已经创建到另一个TextWrangler文件。比较这两个文件可以发现不同之处。符号崩溃文件将有差异,指出文件和行数的问题。

我不得不对symbolicatecrash脚本进行大量的修改,以使其正常运行。

据我所知,symbolicatcrash现在要求.app和.dsym在同一个目录下。它将使用.dsym来定位.app,但不会使用dsym来查找符号。

在尝试这些补丁之前,你应该复制你的符号化崩溃,这将使它看起来在dsym:

getSymbolPathFor_dsymUuid函数的第212行左右

212     my @executablePath = grep { -e && ! -d } glob("$dsymdir" . "/Contents/Resources/DWARF/" . $executable);

matchesUUID函数的第265行左右

265             return 1;

使用Xcode 4,任务更简单:

开放的组织者, 单击左列的Library | Device Log 点击屏幕底部的“导入”按钮…

瞧。日志文件将自动导入并被符号化。如果你先使用Xcode -> Product -> Archive存档构建。

atos已弃用,因此如果您正在运行OSX 10.9或更高版本,您可能需要运行

xcrun atos

警告:/usr/bin/atos正在移动,将从未来的操作系统中删除 X版本。现在可以在Xcode开发工具中使用 通过:xcrun atos调用