尽管所有build设置都相反,Xcode Instruments 正在剥离符号

标签 xcode instruments symbols stripping

问题

Instruments 的 Time Profiler 正在从我的应用程序中删除除系统库之外的所有符号,尽管我已在 Xcode 的所有相关build设置中禁用此行为 — 但仅在一台开发机器上。 另一台开发机器运行正常。

说明

Instruments 的 Time Profiler 正在剥离除系统库之外的所有符号,尽管事实上我已在 Xcode 的所有相关build设置中禁用了此行为——但这仅发生在我的一台开发机器上。我有两台开发机器运行相同版本的 OS X、Xcode 和 Instruments,每台机器都使用相同 Xcode 项目的相同副本,具有相同的build设置、方案和其他配置,并且应用程序使用相同的配置文件进行配置测试设备(iPhone 4S 最新公开版 iOS 5)。

机器 1
- Mac OS X 10.7.4
- Xcode 4.3.2 (4E2002)
- 仪器 4.3 (4321)

机器 2
- Mac OS X 10.7.4
- Xcode 4.3.2 (4E2002)
- 仪器 4.3 (4321)

重现步骤

  • 在每台机器上打开包含的示例项目。
  • 确保选择 iPhone 4S 作为测试设备。
  • 选择产品 > 简介
  • 当 Instruments 启动时,选择 Time Profiler 并继续。
  • 运行应用程序。
  • 请注意在 iMac(机器 1)上运行但在 MacBook Air(机器 2)上运行时符号是如何被剥离的。

  • 预期行为

    我自己的代码中的符号应该出现在两台机器上的 Time Profiler 中。

    回归

    我已经尝试了以下所有方法,但实际结果没有变化:
  • 重新启动机器。
  • 尝试其他 Xcode 项目
  • 删除 Xcode Organizer 中所有项目的“派生数据”。
  • 在 Instruments 中重新符号化文档(在 ~/Library/blahBlahBlah... 中仔细选择正确的 DSYM 文件)

  • 最后说明

    这是一个示例项目的 .zip 文件的链接:Sample Project .zip

    最佳答案

    我终于能够通过一种与核武器和铺路方案相提并论的方法使其工作:

  • 确保为您当前的构建配置禁用所有符号剥离。如果这是为 Instruments 配置的内容,请确保您已为发布配置完成此操作。
  • 从 iOS 设备中删除应用程序。
  • 重新启动 iOS 设备。
  • 重新启动 Mac(否则我根本不相信 Xcode 或 Lion 会退出所有相关进程)。
  • 启动 Xcode,转到 Organizer > Projects 并删除受影响项目的 Derived Data。
  • 清理你的项目。见鬼,为什么不呢?
  • Instruments 的构建和配置文件。
  • 为清楚起见,选择 Instruments 中的 Time Profiler。
  • 第一次运行不会显示符号,但不要退出。让仪器运行!
  • 在 Instruments 中重新符号化文档,仔细导航到当前构建的正确 dSYM 文件。这应该更容易,因为您已在步骤 5 中删除了派生数据。
  • 现在您应该可以看到您的符号了。如果您隐藏非 objective-c 符号,它会有所帮助。

  • 为什么我建议你在第 2 步和第 3 步中删除应用并重启 iOS 设备?我怀疑 Xcode 不会对每个构建执行全新安装,但可能会安装增量,这样 Instruments 中存在的符号地址是当前构建和以前构建的混合。如果是这样,那么对于像我这样在多个 Mac 之间共享单个测试设备的人来说,这个问题就更常见了。这个假设可能是非常不正确的。

    如果上述步骤对您不起作用,请在评论中告诉我。我想在 future 的某个时候创建​​一份详细的雷达报告。

    关于尽管所有build设置都相反,Xcode Instruments 正在剥离符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11217673/

    相关文章:

    iphone - 应用程序运行时 Xcode 4.5 选项卡消失

    core-data - 核心数据 : NSObjectID and NSTemporaryObjectID leaks

    windows - 如何更改年龄不匹配的 PDB 以正确匹配?

    swift - 更改属性其他功能

    ios - 如何让 Swift 与 Webview 交互?

    ios - 如何在不启动Xcode的情况下在iOS设备上启用开发人员模式

    debugging - 如何使用windbg查看c#变量

    scheme - 关于方案中的点 "."

    ios - 在 xcconfig 文件中定义 url 的问题

    ios5 - 无法将iPhone 3gs(iOS 5.0.1)与Instruments应用程序连接