Xcode的Debug Navigator是否与Instruments分配不同?

时间:2018-09-28 23:24:06

标签: xcode memory-management memory-leaks allocation xcode-instruments

我正在尝试在我的应用中查找内存问题。

当我使用Xcode的调试导航器解决内存问题时,我发现应用程序的整体使用率有所增加。对于特定的流程,当我来回走动时,我看不到内存持续存在。

但是,如果我使用“分配”来进行相同的流程和测试,我确实会发现每次来回移动时3Mb都会持续存在。

Xcode的调试导航器是否不可靠,或者它们正在测量不同的东西?!

编辑:

因此,我被告知差异在于构建配置。好。但是,如果我去“编辑方案”并将生成配置更改为“发布”并在我的设备上运行。然后,我可以期望Xcode调试导航器能够正常工作吗?还是还有一些区别?如果可以的话?

2 个答案:

答案 0 :(得分:4)

Xcode的默认行为是在Xcode中运行项目时使用调试版本,而在Instruments中对项目进行性能分析时使用发行版本。调试和发布版本可能具有不同的内存使用量。

您可以从Xcode的方案编辑器中检查和更改构建配置。

enter image description here

如果那不能解决您的问题,那么您将很难获得明确的答案。知道内部工作原理以及调试器和Instruments之间的区别的人是Apple工程师。

答案 1 :(得分:2)

  

Xcode的调试导航器是否不可靠,或者它们正在测量不同的东西

绝对可以!正如我在这里多次建议的(例如here),您必须从不从调试导航仪中得出真实的结论。内存分配在模拟器的调试版本中的工作方式完全不同。如果您想知道应用程序内存的工作方式,则必须使用Instruments才能获得发行版本,并且必须在设备上运行,以使内存使用情况反映实际情况。

  

但是,如果我去执行“ edit scheme”并将构建配置更改为“ release”,那么我能期望Xcode调试导航器能够正常工作吗

绝对不会!发布意味着执行了各种编译器优化,这使得调试器几乎无法使用。但这没关系;您永远不会调试 并使用仪器同时测量任何东西。