2012-06-27 43 views
11

问题的Xcode工具被剥离符号

仪器的时间探查被剥离除从我的应用程序的系统库中的所有符号,尽管我在所有相关的构建禁止这种行为的事实Xcode中的设置 - 但只能在一台开发机器上使用。其他开发机器正常运行。

说明

仪器的时间探查被剥离除系统库中的所有符号,尽管我已经停用在Xcode中所有相关的生成设置这种行为的事实 - 但这只是发生在我的发展方向之一机器。我有两台运行相同版本OS X,Xcode和Instruments的开发机器,每台机器都使用相同Xcode项目的完全相同副本,并具有相同的版本设置,方案和其他配置,并且使用相同的配置文件测试设备(具有iOS 5最新公开版本的iPhone 4S)。

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

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

重现步骤

  1. 在每台机器上打开包含的示例项目。
  2. 确保选择iPhone 4S作为测试设备。
  3. 选择产品>配置文件
  4. 当仪器启动时,选择时间配置文件并继续。
  5. 运行该应用程序。
  6. 请注意在iMac(机器1)上运行时符号是如何去除的,但在MacBook Air(机器2)上运行时不能运行。

预计从我自己的代码的行为

符号应该出现在时间简档在两台机器上。

回归

我已经尝试了所有下面的,与实际结果没有变化:

  1. 重新启动机器。

  2. 尝试其他的Xcode项目

  3. 删除“导出的数据”在Xcode的组织者所有项目。

  4. 重新symbolicating在仪器文件(小心选择在〜/库/ blahBlahBlah正确DSYM文件...)

最后说明

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

回答

6

我终于能得到它,这只是害羞的核弹和-PAVE场景的方法工作:

  1. 绝对确保所有符号剥离是您当前构建配置中禁用。确保你已经为你的发布配置完成了这一点,如果这正是仪器的配置文件。
  2. 从iOS设备上删除应用程序。
  3. 重新启动iOS设备。
  4. 重新启动Mac(我不信任Xcode或Lion ,所有都会退出所有相关进程)。
  5. 启动Xcode,转至管理器>项目并删除受影响项目的派生数据。
  6. 清理您的项目。地狱,为什么不呢?
  7. 仪器的构建和配置文件。
  8. 为了清晰起见,请在乐器中选择Time Profiler。
  9. 第一次运行会不是显示符号,但不要退出。让乐器继续运行!
  10. 在Instruments中重新标记文档,仔细导航到当前版本的正确dSYM文件。因为你已经删除了在步骤5
  11. 导出的数据现在你应该能看到你的符号,这应该是更容易。它有助于隐藏非客观的C符号。

为什么我建议您在步骤2和步骤3中删除应用程序并重新启动iOS设备?我怀疑Xcode不会执行每个构建的干净安装,但可能会安装增量变量,这样仪器中出现的符号地址就是当前构建和以前构建的混合。如果是这样,那么对于像我这样的人来说,这个问题更为常见,他们在多台Mac之间共享一个测试设备。这个假设可能是非常不正确的。

如果上述步骤不适合你,请让我知道在评论中。我想在未来的某个时候创建​​详细的雷达报告。

+0

我还没有测试过你的方法,但肯定会起作用,因为它是完全安装的应用程序。但是,是的,请在这里提交一份雷达报告和更新,这将是非常友善的:) –

+0

我无法做到这一点,当我选择dsym仪器时说:“重新符号化需要MyApp.app.dSYM和AppleProfileKEventAction具有匹配的UUID。“ – Lio

+0

我不确定AppleProfileKEventAction是什么。我知道.dSYM文件会得到很长的UUID名称(在Xcode保存它们以查明我的意思的任何目录中都可以找到它们)。让我知道你发现了什么。 – jaredsinclair

-1

尝试打开XCode 3和他的组织者。并尝试添加从这个组织者一台设备到两台机器。

只需打开组织者并等待他的过程。如果你看到一个按钮“用于开发”,然后点击他。

有时,XCode 4无法真正地为完整开发添加设备。

0

一直面临着同样的情况,偶然发现了这个话题。

我意识到我第一次使用发布构建应用程序并且在Xcode中更改同一个应用程序的方案之后,分析器仍然无法符号化。我尝试了上面提到的所有明显的解决方案,但徒劳无功。

探查器不知何故仍然指的是第一次构建(发布版本)的设置,因此它不能够符号化。所以,我只是为了测试目的而更改了应用程序的包标识符,以便为分析目的创建一个新的应用程序。我可以检查现在存在泄漏的代码。

试一试,让我知道这是否也适用于你。仍然在思索为什么乐器没有象征。

+0

您是否尝试从您的测试设备中删除应用程序,将其关闭并重新打开,然后重新构建它? – jaredsinclair

+0

我怀疑Xcode不会执行每个构建的干净安装,但可能会安装增量,这样符号地址就会混合在一起。这个假设可能是非常不正确的。 – jaredsinclair

+0

是的,我怀疑是一样的。这就是为什么我创建了一个新的应用程序包标识符并通过通配符配置文件构建它。 –

1

我不知道它已被固定在4.3但这是4.2 seen here

仪器 一个已知的问题没有与在Xcode 4.2剖面行为的已知问题。在没有源文件发生变化的构建之后,Instruments将无法为目标应用程序收集符号。

这会影响其中两个项目:

  1. 发布配置中选择了配置文件操作。 (默认)
  2. 长街挂钩产品构建设置为“是”,或者 自定义运行脚本生成阶段条产品(非默认)

的解决方法是做任何一个。以下内容:

  1. 启动配置文件 行动
  2. 做产品的清洁和临时设置的地带之前对产品执行“干净”链接 产品打造T设置o分析时“否”。
  3. 将配置文件操作的配置设置为调试。从内部的器械可直接当你 并不需要重建
  4. 运行连续的曲线。在开发Mac应用程序时,使用Instruments中的GC Monitor 模板可能会导致仪器崩溃。若要 解决该问题,请考虑将您的应用程序迁移到 ARC。
1

我也曾有过类似的问题了好几天。我能够分析调试配置,但不能发布。首先,我尝试制作发行版配置的副本(正如网络上推荐的那样),但该副本也无法使用。

然后我做了调试的副本,把它称为个人,试了一下,资料的符号探查2所示。大!然后,我将优化级别等更改为与Release相同,现在它可以正常工作!只是想分享这一点,因为这条评论会饶过我小时... ...

+1

这是这里最有用的评论!非常感谢,它的工作。其他解决方案只是让我把头撞在墙上。像“在〜/ Library /中找到dSYM”,当打开的文件对话框根本不显示〜/ Library /时,它隐藏在Mountain Lion中... – Hrissan

0

我有一个类似的问题,我曾在我的命令行建立了我的OS X应用程序没有符号(所以在这种情况下,不是iphone或xcode的问题)。原来问题是由于包含我的PATH的不良DYLD_LIBRARY_PATH导致的。当我摆脱所有这些非库路径时,例如/ usr/bin /,它就起作用了。