【问题标题】:Symbolicate adhoc iphone app crashes象征性的临时 iPhone 应用程序崩溃
【发布时间】:2011-02-11 10:17:30
【问题描述】:

我无法使我的代码符号化......我阅读了“下面”的部分:

给定一个崩溃报告,匹配的 二进制文件及其 .dSYM 文件, 符号化相对容易。这 Xcode Organizer 窗口有一个选项卡 目前的崩溃报告 选定的设备。您可以查看 外部收到的崩溃报告 此选项卡 - 只需将它们放在 合适的目录。这是 与 Mac OS X 目录相同 在第一节中描述。它 不管你有什么设备 系留,但其中的目录 你放置的崩溃报告必须是 系留目录和 选择的设备。

没有必要放置 二进制和 .dSYM 文件在任何 特定位置。 Xcode 使用 Spotlight 和 UUID 来定位 正确的文件。有必要, 但是,这两个文件都在同一个 目录,并且该目录是 由 Spotlight 索引的一个。 你的主目录中的任何地方都应该 没事。

但这对我不起作用......这就是我所做的:

  • 我打开了 xcode 管理器,我的 iphone 设备出现了崩溃日志
  • App 和 dsym 文件在我桌面上的 xcode 项目中

其余的都应该是自动的,对吧?但是崩溃日志还没有符号化...

欢迎任何 cmets。

干杯。

哥蒂。

【问题讨论】:

  • 您桌面上的 .app 和 .dSYM 文件是否与您构建临时二进制文件时生成的完全相同?任何变化,即使是很小的变化,都可能破坏符号化过程。

标签: iphone logging crash organizer symbolicatecrash


【解决方案1】:

我已经为此苦苦挣扎了好几天,终于弄明白了。我无法从我安装到手机上的任何存档应用程序中获取符号化日志。对我来说,这是构建设置的问题,尽管我确实注意到在我执行这些步骤之后它也能够符号化来自一些较旧构建的日志。 YMMV 可能会因旧版本的崩溃日志而异。在 iOS 4.3.1 上的 Xcode 4.0.1 中执行这些步骤后,我能够获得符号化日志。

在 Xcode 项目导航器中,单击您的项目,然后单击构建设置。当你归档你的应用程序时,Xcode 默认使用 Release 配置。您只想为 Release 配置设置以下值,因此您必须展开任何尚未展开的设置,以允许您在每个配置的基础上进行设置。

确保为发布配置设置了这些值:

  • 生成调试符号:是
  • 调试信息格式:带有 dSYM 文件的 DWARF
  • 部署后处理:是
  • 带状链接产品:是
  • 使用单独的条带:是
  • 复制期间去除调试符号:否
  • 条形样式:所有符号

设置完成后,归档并重新安装您的应用程序。从生成的存档生成的新崩溃报告应正确符号化。对我来说,在执行这些步骤后,许多旧的崩溃报告也可以正确表示,尽管我不确定如果构建非常不同,结果会有多准确。

作为参考,我在研究了这个页面后想出了这一切:http://developer.apple.com/tools/xcode/symbolizingcrashdumps.html

我还找到了这个页面,如果您想弄清楚特定构建设置的作用,它会很方便:http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html

希望这会有所帮助!

【讨论】:

  • Generate Debug - Yes, Debug Info Dwarf+dSym, Strip Debug Durig Copy No, Strip Style All,默认都是这样设置的。设置部署后处理和剥离链接产品对我没有影响。但是使用单独的条是使它起作用的原因!!!谢谢
【解决方案2】:

为了象征您的崩溃报告,请尝试以下方法:

(a) 找到符号器(/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash)

(b) 打开终端并拖动此文件(以便正确复制路径)

(c) 运行 /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatorcrash .crash .app 之类的命令(提及崩溃报告的整个路径和应用程序文件)

(d) 将显示符号化的崩溃报告

【讨论】:

  • 我在管理器的设备日志中收到的相同崩溃报告,我使用您的方法收到。为什么?
  • 对我来说,为 .app 添加显式路径会有所帮助;而 Xcode(我认为是 4.2 版以来)肯定跳过了它——我在 Xcode 中的应用程序遇到了非符号化的崩溃。
  • @kender :正如我所提到的,应该提到应用程序和崩溃报告的整个路径,我对非符号化报告位感到困惑,你使用的是哪个版本的 Xcode?​​span>
  • @CodeWriter 我正在使用最新版本,4.3.2 (4E2002)
【解决方案3】:

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

  1. 将推送到应用商店的发布 .app 文件、发布时创建的 .dSYM 文件和从 APPLE 接收的崩溃报告复制到文件夹中。

  2. 打开终端应用程序并转到上面创建的文件夹(使用 CD 命令)

  3. atos -arch armv7 -o '(此处为您的 .app 文件名)'/'(此处为 .dSYM 文件名)'(崩溃报告中发生崩溃的内存位置)。根据报告,内存位置应该是应用程序崩溃的位置。

例如:atos -arch armv7 -o 'app name.app'/'app name' 0x0003b508

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

谢谢

【讨论】:

  • 这与符号化整个崩溃报告不同。这为您提供了单个地址的相应符号。
  • @DaveCameron 是的,以上只是这样做的,但如果在没有地址的情况下使用,它允许您通过一一提交地址来分析多个位置。 stackoverflow.com/questions/1460892/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
相关资源
最近更新 更多