【发布时间】:2012-04-16 04:24:55
【问题描述】:
我有很多来自不同用户的崩溃日志,我有不同的构建和 dSYM 文件现在我如何确定特定的崩溃日志属于哪个构建和 dSYM 文件。
有什么方法可以检查 crashlog 和 dSYM 是否属于同一个版本...??
问候,
【问题讨论】:
标签: iphone ios cocoa-touch ipad symbolicatecrash
我有很多来自不同用户的崩溃日志,我有不同的构建和 dSYM 文件现在我如何确定特定的崩溃日志属于哪个构建和 dSYM 文件。
有什么方法可以检查 crashlog 和 dSYM 是否属于同一个版本...??
问候,
【问题讨论】:
标签: iphone ios cocoa-touch ipad symbolicatecrash
您必须归档二进制文件和 dSYM,因为每次构建都会创建新的,每个都具有相同的 UUID。
您可以使用 dwarfdump --uuid yourapp.app/yourapp 和 dwarfdump --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。
【讨论】:
好的,谢谢你们的回复,这对我很有帮助。我已经找到了在 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", “公共目录”, “公共.项目” ) 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 /var/mobile/Applications/A5870F65-2694-4A06-BBDE-8BCA709FB838/Bitzer .app/比泽尔
因此,在此结果中,您将再次找到一个 32 位字符串(粗体),它是您的应用程序二进制文件的 UUID。如果此 UUID 与您的 dSYM 文件 UUID 匹配,则它们属于同一构建。
这就是我观察到的全部。我再次对所有回复投了赞成票,感谢回复不断帮助人们祝你好运..:)
【讨论】:
您应该在创建 .app 文件后归档 dSYM。每个构建,即使使用相同的源,也可以生成完全不同的 dSYM 文件。
您的 .app 文件是否有唯一的文件名,其中包含版本号?如果是这样,该名称将出现在您的崩溃日志中,大约在第 5 行,Path: 旁边。
除此之外,我认为没有其他内置方式可以将两者关联起来。
养成每次发布都保存 dSYM 文件的习惯。我相信您可以使用 Xcode 存档来做到这一点 - 但我倾向于从自动命令行工具发布我的应用商店,所以我不使用此功能。
【讨论】: