15

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

有什么方法可以检查 crashlog 和 dSYM 是否属于同一个版本...??

问候,

4

3 回答 3

27

您必须归档二进制文件和 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。

于 2012-04-03T09:59:28.410 回答
19

好的,谢谢大家的回复,对我帮助很大。我已经找到了在 dSYM 文件中找到崩溃日志之间关系的正确方法。我和你分享这个:

因此,首先将所有崩溃日志和 dSYM 保存在一个目录中并运行以下命令,如果它们与您匹配得好,则为您提供应用程序的 UUID 和崩溃日志的 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 = 58273792kMDItemKind = "包" kMDItemLogicalSize = 58267749 kMDItemPhysicalSize = 58273792kMDItemKind = "包" 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 匹配,则它们属于同一构建。

这就是我所观察到的。我再次对所有回复投了赞成票,感谢回复不断帮助人们祝你好运..:)

于 2012-09-09T08:53:23.253 回答
2

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

您的 .app 文件是否有唯一的文件名,其中包含版本号?如果是这样,该名称将出现在您的崩溃日志中,大约在第 5 行,在 Path: 旁边。

除此之外,我认为没有任何其他内置方式可以将一个与另一个相关联。

养成每次发布都保存 dSYM 文件的习惯。我相信您可以使用 Xcode 存档来做到这一点 - 但我倾向于从自动化命令行工具发布我的应用商店,所以我不使用此功能。

于 2012-04-02T13:51:19.533 回答