Crashlog链接到.dSYM

时间:2012-04-02 13:44:45

标签: iphone ios cocoa-touch ipad symbolicatecrash

我有来自不同用户的许多崩溃日志,我现在有不同的构建和dSYM文件,我如何确保特定的崩溃日志属于哪个构建和dSYM文件。

有没有办法检查crashlog和dSYM是否属于同一个版本...... ??

此致

3 个答案:

答案 0 :(得分:21)

您必须归档二进制文件和dSYM,因为每个版本都会创建新的版本,每个版本都具有相同的UUID。

您可以使用dwarfdump --uuid yourapp.app/yourappdwarfdump --uuid yourapp.app.dSYM来检查各个二进制文件的UUID。

要通过Spotlight搜索具有特定UUID的dSYM,您可以执行以下操作:mdfind "com_apple_xcode_dsym_uuids == 5255A87A-B23C-3AE8-B367-14B49C21C1D6" 请注意,这里的UUID是一个用大写字母写成的例子,格式为8-4-4-4-12。

答案 1 :(得分:17)

好的家伙感谢您的回复,这对我很有帮助。我已经找到了在dSYM文件中找到crashlog之间关系的正确方法。我和你分享这个:

首先,将所有的crashlog和dSYM保存在一个目录中并运行以下命令,它们会为您提供应用程序的UUIDS以及与您匹配的崩溃日志的UUID。在运行命令之前,请确保您位于保存所有这些文件的同一文件夹中。

首先运行命令:

mdls YourApp.app.dSYM  

这会给你以下结果(样本):

com_apple_xcode_dsym_paths =(     “目录/资源/ DWARF / YourApp” ) com_apple_xcode_dsym_uuids =(     “9AD4BCAF-C847-38B1-9055-CF4221BE2F65” ) kMDItemContentCreationDate = 2012-08-27 08:42:40 +0000 kMDItemContentModificationDate = 2012-08-27 08:42:40 +0000 kMDItemContentType =“com.apple.xcode.dsym” kMDItemContentTypeTree =(     “com.apple.xcode.dsym”     “com.apple.package”     “public.directory”     “public.item” ) kMDItemDateAdded = 2012-09-06 11:30:37 +0000 kMDItemDisplayName =“Yourapp.app.dSYM” kMDItemFSContentChangeDate = 2012-08-27 08:42:40 +0000 kMDItemFSCreationDate = 2012-08-27 08:42:40 +0000 kMDItemFSCreatorCode =“” kMDItemFSFinderFlags = 0 kMDItemFSHasCustomIcon = 0 kMDItemFSInvisible = 0 kMDItemFSIsExtensionHidden = 0 kMDItemFSIsStationery = 0 kMDItemFSLabel = 0 kMDItemFSName =“YourApp.app.dSYM” kMDItemFSNodeCount = 1 kMDItemFSOwnerGroupID = 20 kMDItemFSOwnerUserID = 501 kMDItemFSSize = 58267749 kMDItemFSTypeCode =“” kMDItemKind =“包” kMDItemLogicalSize = 58267749 kMDItemPhysicalSize = 58273792

现在,您获得了dSYMB文件的UUID(粗体)。

现在运行以下命令:

grep "+YourApp" *crash 

这将导致:

YourApp 8-27-12 2-25 PM.crash:0xe6000 - 0x8e9fff + YourApp armv7 < 9ad4bcafc84738b19055cf4221be2f65> / var / mobile / Applications / A5870F65-2694-4A06-BBDE-8BCA709FB838 / Bitzer.app/Bitzer

因此,在此结果中,您将再次找到32位数字符串(粗体),它是应用程序二进制文件的UUID。如果此UUID与您的dSYM文件UUID匹配,则它们属于同一版本。

这是我所观察到的。我已经投了所有的回复再次感谢回复一直帮助人们好运.. :)

答案 2 :(得分:2)

您应该在创建.app文件后归档dSYM。即使使用相同的源,每个构建都可以生成完全不同的dSYM文件。

您的.app文件是否有唯一的文件名,包含版本号?如果是这样,该名称将位于路径旁边第5行的崩溃日志中:。

除此之外,我认为还没有任何其他内置方法可以将一方与另一方联系起来。

养成每个版本保存dSYM文件的习惯。我相信你可以用Xcode存档做到这一点 - 但我倾向于使用自动命令行工具来做我的应用商店版本,所以我不使用这个功能。