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

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

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

现在该做什么?

我试着引用:

symbolicatecrash crashreport.crash myApp.app.dSYM

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

我做错什么了吗?


当前回答

在运行symbolicate crash之前,我还将dsym、应用程序包和崩溃日志放在同一个目录中

然后我使用.profile中定义的这个函数来简化运行symbolicatcrash:

function desym
{
    /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more
}

上面的论点可能对你有帮助。

您可以检查,以确保spotlight“看到”您的dysm文件通过运行命令:

mdfind 'com_apple_xcode_dsym_uuids = *'

在目录中查找您拥有的dsym。

注意:在最新的Xcode中,不再有Developer目录。你可以在这里找到这个实用程序:

/应用程序/ xcode /内容/ SharedFrameworks / DTDeviceKitBase.framework /更‌离子/ /资源/ symbolicatecrash

其他回答

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

我们使用谷歌Crashlytics来监督崩溃日志,感觉使用起来非常及时和方便。

文档链接: https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#missing-dsyms

All about Missing dSYMs Fabric includes a tool to automatically upload your project’s dSYM. The tool is executed through the /run script, which is added to your Run Script Build Phase during the onboarding process. There can be certain situations however, when dSYM uploads fail because of unique project configurations or if you’re using Bitcode in your app. When an upload fails, Crashlytics isn’t able to symbolicate and display crashes, and a “Missing dSYM” alert will appear on your Fabric dashboard.

可以按照下面列出的步骤手动上传缺失的dsym。

注意: 作为自动化dSYM上传工具的替代方案,Fabric提供了一个命令行工具(upload-symbols),可以手动配置该工具,使其作为项目构建过程的一部分运行。有关配置说明,请参阅下面的上传符号部分。

...

对于那些在2022年寻找有效解决方案的人

符号化iPhone应用程序崩溃报告的步骤

将苹果提供的。txt格式的崩溃日志转换为。crash Xcode >窗口>设备和模拟器 必须选择已连接并正在运行的ios设备。(不是模拟器,也不是脱机设备) 选择All Logs部分,拖放.crash文件


请注意,其他具有symbolicatecrash的解决方案已弃用,其用法显示:

⚠️symbolicatecrash已弃用;它将在Xcode⚠️的未来版本中被删除

我不得不对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;

分析苹果崩溃报告的步骤:

将推送到appstore的发布版.app文件、发布时创建的. dsym文件以及从APPLE收到的崩溃报告复制到一个文件夹中。 打开终端应用程序,进入上面创建的文件夹(使用cd命令) 执行命令atos -arch armv7 -o APPNAME。app /浏览器名称MEMORY_LOCATION_OF_CRASH。内存位置应该是应用程序根据报告崩溃的位置。

例如:atos -arch armv7 -o 'APPNAME。应用0 x0003b508”/“浏览器名称”

这将向您显示导致崩溃的确切方法名称。

[classname functionName:];-510年

Symbolicating音标

如果我们使用IPA作为符号-只要用。zip重命名扩展名。IPA,然后我们就可以得到一个包含app的有效载荷文件夹。在这种情况下,我们不需要. dsym文件。

Note

这只能在应用程序二进制没有符号剥离的情况下工作。默认情况下,发布版本会删除符号。我们可以在项目构建设置“复制过程中的条带调试符号”中将其更改为NO。

更多细节请看这篇文章