【问题标题】:Instruments Leaks - Not showing my source codeInstruments Leaks - 不显示我的源代码
【发布时间】:2010-10-18 04:54:17
【问题描述】:

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

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


(来源:andrewgarrison.com

【问题讨论】:

    标签: iphone memory instruments memory-leaks


    【解决方案1】:

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

    转到文件---->项目设置---->高级---选择旧版

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。原来我已将构建目录设置为 /tmp/xcode。将其更改回默认值可以解决问题。这是 Xcode 3.2.3 的版本。

      【讨论】:

        【解决方案3】:

        项目 > 编辑项目设置

        选择调试目标

        点击构建标签

        确保未选中Strip Linked Product

        【讨论】:

          【解决方案4】:

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

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

          在我最终找到解决方案之前,我一直在寻找这个好一个月。我希望这对你们中的一些人有所帮助!

          【讨论】:

          • 感谢您的回答,我无法得到任何其他类似问题的建议。这非常有效。
          • 这对我有用 - 与其他人一样,我无法获得任何其他工作答案
          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            我看到了这种情况,但配置不同。在 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 是一种解决方法。果然,它对我有用!

            【讨论】:

            • 我遇到了同样的问题,同样将活动 SDK 切换到 iPhone 3.1 也对我有用。谢谢!
            【解决方案7】:

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

            哒哒!

            【讨论】:

            • 这行得通吗?我的启动盘和主机名都是只有 ASCII 字符的单个单词 - 但我也看不到符号。
            • 这帮助我处理了 2.x 风格的崩溃日志。对于 3.0 风格,我必须学习一些 perl 并修复符号化脚本。现在可能有一个确定的版本。
            • “修复符号化脚本”是什么意思?我被困在同一个问题上,而在任何一个地方都没有非 ascii 字符。在我的雪豹“升级”之前,我使用的仪器一直为我工作。
            • 将符号添加到堆栈跟踪的脚本称为“symbolicatecrash”。这是我见过的最不健壮的代码之一。它使用聚光灯 [fail to] 找到您的 .dSYM,忽略应用程序目录中的那个,当前目录等。当我修复我的版本时,它错误地引用了 shell 字符(这是在非 ascii 工作之后)。如果你对 perl 感到满意,你可以调试它,或者只是 google symbolicatecrash+snowleopard。也许有人把它修好了。
            【解决方案8】:

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

            【讨论】:

              猜你喜欢
              • 2011-07-13
              • 2011-12-27
              • 2011-06-08
              • 2013-01-26
              • 2012-09-08
              • 1970-01-01
              • 2016-08-26
              • 2015-10-24
              • 2010-09-27
              相关资源
              最近更新 更多