【问题标题】:Absent method calls in Instruments stack traceInstruments 堆栈跟踪中缺少方法调用
【发布时间】:2015-06-18 00:13:53
【问题描述】:

我正在尝试使用 Instruments 对我的应用程序在设备上的内存分配进行分析。问题是分析器在堆栈跟踪中仅显示本机方法调用;我自己的方法没有显示出来,这使得堆栈跟踪完全没用。

我使用的是 XCode 6.4,设备是运行 iOS 8.4 的 iPhone 5c。

任何帮助将不胜感激。

【问题讨论】:

    标签: memory-leaks xcode6 instruments


    【解决方案1】:

    问题是由于 XCode 在构建过程中生成的 .dSYMM 文件造成的。该文件在调试模式下用于表示方法调用。 Instruments 似乎并不知道它的位置。为了解决这个问题,我必须执行以下操作:

    • 开始在仪器下录制之前,转到文件->符号
    • 展开您的应用项目并选择您的应用名称
    • 点击 dSYM 路径前的“定位”
    • 应用对应的dSYM文件应该在~/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos/[APP_NAME].app.dSYM下。
    • 应该会弹出一个对话框,询问您 Instruments 是否应该始终在该位置查找 dSYM 文件;这就是你想要的
    • 开始录制;您的方法调用现在应该可以正常显示了

    【讨论】:

    • 执行此操作时,我得到一个弹出窗口,标题为“没有要符号化的新库”和正文“指定的路径没有为任何选定的库找到 dSYM。”。很抱歉挖坟,但如果您有任何其他建议,我很想听听!
    • 哦,另一个答案实际上似乎对我有用。我唯一做的另一件事是更改我的应用程序的目标以匹配我正在使用的设备的目标。这本身不起作用,但我在尝试这一步之前就这样做了,所以也许由于原始派生数据来自旧目标,它无法正确获取符号,但更改目标+清除派生数据有效?跨度>
    【解决方案2】:

    在 Instrument 8.2.1 中,删除 ~/Library/Developer/Xcode/DerivedData 中的文件夹似乎可以解决问题。

    【讨论】:

    • 这对我有用。我唯一做的另一件事是更改我的应用程序的目标以匹配我正在使用的设备的目标。这本身不起作用,但我在尝试这一步之前就这样做了,所以也许由于原始派生数据来自旧目标,它无法正确获取符号,但更改目标+清除派生数据有效?跨度>
    猜你喜欢
    • 1970-01-01
    • 2010-11-17
    • 2013-03-02
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    相关资源
    最近更新 更多