仪器泄漏 - 没有显示我的源代码

时间:2009-04-08 00:24:04

标签: iphone memory instruments memory-leaks

我正在尝试使用Leaks应用程序分析iPhone应用程序,除了当我尝试查看有关特定内存泄漏的详细信息时,一切似乎都正常工作。泄漏似乎没有加载我的源代码。查看右侧的堆栈视图,我可以看到引用iPhone框架的调用,但引用我编写的源代码的任何内容都是空的。下面的截图说明了我的观点。浅蓝色的块应该引用我的源代码。有没有人遇到过这个问题? Leaks是不是没有正确找到我的源代码/符号?谢谢!

编辑:我正在使用带有Debug配置的'Device - iPhone OS 2.2'编译应用程序。我通过在Xcode中选择Run-> Start With Performance Tool-> Leaks来启动Leaks。如何为Leaks提供“使符号文件可用”?

alt text
(来源:andrewgarrison.com

8 个答案:

答案 0 :(得分:13)

对于iOS 4.0及更高版本,修复符号并将这些无用的内存地址转换为漂亮的文件名,函数名和行号的方法如下:

  1. 在Xcode中,转到Run - >使用Performance Tool运行并选择您的乐器
  2. 仪器加载后,点击“停止”按钮停止录制。转到文件 - >重新标志文件。
  3. 在新窗口中,单击“路径”,然后单击加号(+)按钮以添加新路径。导航到包含项目文件的文件夹,然后单击“打开”。单击“符号”。
  4. 利润!
  5. 在我终于找到解决方案之前,我正在寻找这个好月份。我希望这有助于你们中的一些人!

答案 1 :(得分:8)

我看到这种情况发生了,但是在不同的配置上。在Snow Leopard 10.6.1,Xcode 3.2,Instruments 2.0中,在模拟器中运行iPhone OS 3.0时,我没有在Leaks中获得任何符号。在Apple的iPhone开发人员论坛中进行搜索后发现,这是iPhone 3.0 SDK的一个已知问题(正在进行中),将活动SDK切换到3.1是一种解决方法。果然,它对我有用!

答案 2 :(得分:2)

从您的启动盘中删除所有非ascii字符
和主机名(请参阅系统偏好设置中的共享面板) 并重新启动。

Ta da!

答案 3 :(得分:2)

项目> 修改项目设置

选择调试目标

点击构建标签

确保取消选中剥离链接产品

答案 4 :(得分:1)

您是否在调试模式下编译并使符号文件可用?

答案 5 :(得分:1)

如果构建目标目录以“。”开头。 (例如,我使用的是“.xcode-build”),然后找不到.dsym文件。对于我的情况,将构建目录更改为“xcode-build”修复了问题,现在我的所有应用程序的符号都显示在堆栈跟踪中!

答案 6 :(得分:1)

我遇到了同样的问题。事实证明我已将构建目录设置为/ tmp / xcode。将此更改回默认值可修复问题。这是Xcode 3.2.3。

答案 7 :(得分:0)

我有Snow Leopard和Xcode 4.5.2 - Instruments 4.5 一旦我将默认的Debug位置设置为Legacy,它就开始显示

转到文件---->项目设置---->高级---选择遗产

Debug Location ---Legacy Settings