Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XCode Instruments-查找代码泄漏的线路_Xcode_Cocoa_Memory Leaks_Instruments - Fatal编程技术网

XCode Instruments-查找代码泄漏的线路

XCode Instruments-查找代码泄漏的线路,xcode,cocoa,memory-leaks,instruments,Xcode,Cocoa,Memory Leaks,Instruments,一旦在4.3.2中检测到泄漏,是否有办法让它带您进入发生泄漏的代码行?文件中说: 要查找泄漏内存 打开仪器 从选择目标弹出菜单中选择您的应用程序 单击录制按钮 练习应用程序执行代码,并在显示泄漏时单击停止按钮 单击“详细信息”窗格中标识的任何泄漏对象 在“扩展详细信息”窗格中,双击代码中的指令 单击详细信息窗格中的Xcode图标以在Xcode中打开该代码。 当我双击“扩展详细信息”下的对象时,它不会打开代码,它会打开一个类似以下内容的窗口:+0x30 testq%rax,%rax在“扩展详细信息

一旦在4.3.2中检测到泄漏,是否有办法让它带您进入发生泄漏的代码行?文件中说:

要查找泄漏内存

  • 打开仪器
  • 从选择目标弹出菜单中选择您的应用程序
  • 单击录制按钮
  • 练习应用程序执行代码,并在显示泄漏时单击停止按钮
  • 单击“详细信息”窗格中标识的任何泄漏对象
  • 在“扩展详细信息”窗格中,双击代码中的指令
  • 单击详细信息窗格中的Xcode图标以在Xcode中打开该代码。

  • 当我双击“扩展详细信息”下的对象时,它不会打开代码,它会打开一个类似以下内容的窗口:
    +0x30 testq%rax,%rax

    在“扩展详细信息”视图中双击调用堆栈中的函数时,该函数是您编写的函数吗?如果双击未编写的函数,例如Cocoa框架中的方法,您将获得与问题中列出的一样的汇编语言指令。您必须双击为Instruments编写的函数才能显示代码


    Instruments中的调用树视图可以更容易地找到代码中泄漏内存的区域。从跳转栏中选择调用树。在窗口的左侧是一个带有一系列复选框的调用树部分。选中“反转调用树”和“隐藏系统库”复选框可以更轻松地在调用树中查找代码。双击调用树中的一个函数以打开源代码视图,该视图将显示分配泄漏内存的代码行。

    谢谢,看起来它不是我的函数之一。我像你说的那样使用支票簿并关闭了系统库,我只得到了一个以符号名“开始”列出的泄漏。。。嗯,想想是什么代码引起的。现在,当我从下拉列表中选择Leaks时,泄漏的对象是我的一个类,“responsible frame”是-[NSCustomObject nibInstantiate]-我不知道这是什么…好的,我修复了泄漏-它与MainMenu.xib中的类的初始化有关,“start”一词是一个线索。祈求好运,我不会再看到它了。我可以看到树,但是调用显示了我的应用程序名和一些内存地址。instruments还需要什么才能链接回代码?@Efren instruments可能无法找到包含函数名的dSYM文件。在仪器中,选择仪器>调用树数据挖掘>定位dSYM。dSYM文件通常与项目发布版本的应用程序包位于同一目录中。感谢@Mark,它似乎抱怨UUID不匹配,可能是因为使用了cocoapods吗?