代码之家  ›  专栏  ›  技术社区  ›  mfaani

Xcode的Debug Navigator与Instruments的工作方式不同吗?

  •  5
  • mfaani  · 技术社区  · 6 年前

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

    当我使用Xcode的debug navigator处理内存问题时,我看到应用程序的总体使用量增加了。对于一个特定的流,当我来回的时候,我看不到记忆被持久化。

    然而,如果我使用分配通过相同的流和工具,每次来回都会看到3MB被持久化。

    是Xcode的调试导航器不可靠,还是他们正在测量不同的东西或其他东西?!

    编辑:

    所以有人告诉我,不同之处在于构建配置。好 啊。但如果我去“编辑方案”并将构建配置更改为“发布”,然后在我的设备上运行。然后我能期望Xcode调试导航器也能工作吗?还是有些不同?如果是什么?

    2 回复  |  直到 6 年前
        1
  •  2
  •   matt    6 年前

    是Xcode的调试导航器不可靠还是他们正在测量不同的东西

    绝对是的!正如我在这里多次建议的那样( here 例如),您必须 从未 从测试中得出真正的结论。在模拟器的调试构建中,内存分配的工作方式完全不同。如果你想知道你的应用程序的内存是如何工作的,你必须使用仪器,这样你才能得到一个发布版本,你必须在一个设备上运行,这样你的内存使用情况才能反映真实世界的情况。

    但如果我去“编辑方案”并将构建配置更改为“发布”。。。然后我能期望Xcode调试导航器也能工作吗

    绝对不行!Release意味着执行各种各样的编译器优化,使得调试器几乎无法使用。但这并不重要;你永远不会调试 用仪器同时测量任何东西。

        2
  •  6
  •   Swift Dev Journal    6 年前

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

    您可以从Xcode的scheme编辑器检查并更改构建配置。

    enter image description here

    如果这不能解决你的问题,你将很难得到一个明确的答案。了解内部工作原理以及调试器和工具之间区别的人是苹果的工程师。