2009-04-08 53 views
14

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

编辑:我编译使用'设备 - iPhone OS 2.2'与调试配置的应用程序。我通过选择Run-> Start With Performance Tool->从Xcode中泄漏来启动泄漏。如何让'为符号文件提供'泄漏?

alt text http://www.andrewgarrison.com/forum/leaks_nosource.png

回答

2

删除来自您的启动磁盘的任何非ASCII字符
和主机名(请参阅系统偏好设置共享面板) 并重新启动。

大达!

+0

这项工作?我的启动盘和主机名都是只有ASCII字符的单个字 - 但我也没有看到符号。 – 2009-09-17 01:30:32

+0

这帮了我2.x风格的崩溃日志。对于3.0风格,我不得不学习一些Perl并修复符号性脚本。现在可能有一个明确的版本。 – 2009-09-17 10:51:50

+0

你是什么意思“修复符号脚本?”我被困在这个没有非ASCII字符的地方。仪器*使用*为我工作,直到我的雪豹“升级”。 – n8gray 2009-09-22 00:01:31

1

你在调试模式下进行编译,使符号文件可用?

+0

请问下载者请发表评论。谢谢。 – 2009-05-22 10:33:25

8

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

1

如果您的构建目标目录以“。”开头。 (例如,我正在使用“.xcode-build”),则不会找到.dsym文件。在我的情况下,将build目录更改为“xcode-build”可以解决问题,现在我的应用程序的所有符号都显示在堆栈跟踪中!

1

我有同样的问题。原来我已经将build目录设置为/ tmp/xcode。将其更改回默认值可解决问题。这是Xcode 3.2.3。

13

对于iOS 4.0或更高版本,修复符号,把那些无用的内存地址转换成美丽的文件名,函数名和行号的方法如下:

  1. 在Xcode中,转到运行 - >运行使用Performance Tool并选择您的乐器
  2. 仪器加载后,点击停止按钮停止录制。转到文件 - >重新符号文档。
  3. 在新窗口中,单击路径并单击加号(+)按钮添加新路径。导航到包含项目文件的文件夹,然后单击打开。点击Symbolicate。
  4. 利润!

在我终于找到解决方案之前,我一直在寻找这个好的月份。我希望这可以帮助你们中的一些人!

2

项目>编辑项目设置

选择调试目标

点击构建标签

确保地带链接的产品没有被选中

0

我有雪豹与Xcode 4.5.2 - 仪器4.5 一旦我已设置默认调试位置为遗产它开始显示

转到文件---->项目设置---->高级---选择传统

Debug Location ---Legacy Settings