Xcode 11调试器非常慢-一个已知问题?


95

自从我更新到最新的Xcode版本11.0(11A420a)以来,调试非常缓慢且麻烦。

编辑:更新为11.1 GM(11A1027)之后,问题仍然相同。

编译项目并在模拟器或设备上运行它没有问题。但是,到达断点时,Xcode或多或少变得不可用:

  • 到达断点后,程序立即停止执行。但是,Xcode最多需要30秒才能显示在代码窗口中的位置,大约需要一分钟左右的时间才能加载变量视图的内容(该视图显示断点处可用的变量的值和状态)。
  • 如果使用单步执行或单步执行功能,则最多需要一分钟才能执行下一步,而再次需要一分钟才能加载变量。

我在具有3.2 GHz i7和32 GB内存的Mac mini 2018上运行Xcode。我之前在同一台计算机上使用过Xcode 10,没有任何问题。


搜索“ Xcode慢”会带来大量线程,当然还有可能的解决方案。从我作为iOS开发人员的那几年开始,我知道Xcode从来不是最快,最稳定的程序。但是,它从来没有像现在这样糟糕过。

不幸的是,所有的窍门(重启Xcode或Mac,清理项目,清理Xcode库文件夹等)均无效,

因此,最大的问题是:

这是Xcode 11中的已知问题吗?有没有已知的解决方案?


对于初学者来说,最新的Xcode稳定版本是11A1027,而不是11A420a。我将从更新它开始。
拉斐尔·弗朗西斯科

2
Mhh,11A420a是App Store中可用的最新版本
Andrei Herford,

2
我现在更新到11A420a,问题仍然相同。
安德烈·赫尔福德,

2
我尝试了11.1(11A1027)-同样
nikans

3
您可以做的一件事是向Apple提交错误报告。那就是我通常要做的。他们最终答复。通常,他们会询问系统信息,并要求您运行一些诊断程序。通常,Xcode速度很慢,我不确定Apple是否知道如何修复它。我在10核iMac Pro上运行,而Xcode仍然很慢。
Mobile

Answers:


26

好吧,我遇到了同样的问题,最近发现我只是忘记为方案禁用诊断程序

在此处输入图片说明

打开运行配置->管理方案->编辑方案->运行->诊断选项卡


7
谢谢你的回答。由于投票,我认为这为某些用户解决了问题。但是,就我而言,这没有任何区别。因此,尽管这在某些情况下可能会有所帮助,但不幸的是,这并不是普遍的解决方案
Andrei Herford

Andrei能否提供一些量化指标,“变慢”是什么意思?您知道Swift和Objective-C的混合语言项目的构建速度通常较慢吗?
Gennadiy Ryabkin '19年

2
好吧,我想这就是问题所在……首先,这与构建时间无关。如前所述:“编译项目并在模拟器或设备上运行没问题。但是,到达断点时,Xcode或多或少变得不可用了”
Andrei Herford

很酷的Andrei,但我对调试器的回答。诊断页面显示调试器的设置。而且构建时间也没有。特别是有关内存管理和分配的部分。只需重新检查方案和配置的名称即可。
Gennadiy Ryabkin

Andrei,我不认为您在Xcode 11之上安装了自定义LLDB,这意味着最新的OS-X。这是特定于您的环境的。我建议再检查一次所有方案设置。
Gennadiy Ryabkin

1

使用“整体编译”与“增量编译”行为时,我已经看到了一些性能改进。此外,在Mojave和Catalina上运行都应显示性能问题。特别是由于Canvas预览和其他新功能比上一版Xcode需要更多的CPU强度,因此我希望使用Xcode 11时Mojave的性能会降低(因为未针对该版本的OS进行过优化)。随着Catalina处于测试版中,我希望还会看到其他问题。除了视力测试外,我没有采取其他具体措施。整个编译的初始运行速度很慢,但此后似乎有所改善。

快速帮助状态:

概要

此设置控制模块中Swift文件的重建方式。*增量式:仅重建模块中已过期的Swift源文件,并根据需要运行多个编译器进程。* 整个模块:始终在单个编译器过程中重建模块中的所有Swift源文件。宣言

SWIFT_COMPILATION_MODE值类型

枚举(字符串)


4
可以使用断点编译时间还可以,尽管可以将xcode传送到最近黑洞的事件视界附近。
尼坎斯(Nicans)

2
即使答案不能解决问题中描述的问题,也可以注意到作者做出了努力。因此,这不应该成为大规模否决的理由,不是吗?
安德烈·赫尔福德,

实际上,现在是调试版本中建议的增量设置(请参阅WWDC talk developer.apple.com/videos/play/wwdc2018/408)。也许这取决于项目之间的关系,但是根据我们的情况,干净的构建比整个模块的构建要慢(5s),但增量构建的速度要快40%(30s)。
Mike Bryant

@nikans的编译时间与任何其他IDE和其他语言相比仍然很慢。但是我必须承认最糟糕的是调试器。
firetrap

0

您是否尝试过以安全模式运行Xcode?这并不理想,但这是我可以使其高效运行的唯一方法。直到最近的Catalina更新,在安全模式下不再检测到我的设备。所以我现在回到正题。


原来是我的防病毒软件使速度下降。禁用它可以解决问题。
迪诺

@beefon我相信Dino是指MacOs安全模式。您可以在此处了解更多信息:support.apple.com/zh-cn/HT201262
Bartosz Kunat

0

我在两种不同的情况下发现了相同的问题:

1)该应用不是由Xcode启动的,即在“方案运行”设置的“信息”面板中设置了“等待可执行文件启动”标志;

2)在方案设置中选择了“由于后台获取事件而启动”选项(但这不是默认设置)

Xcode选项位置

Xcode 11.2.1(11B500)


0

就我而言(XCode 11.x,MacOS 10.15.2),我发现极端调试器缓慢仅在我单步执行时才触发 在执行另一单步操作的同时执行单步操作(即,我太快地按下步进按钮)时,。我当前的解决方法是避免这样做。

纯粹是推测,但也许是由XCode / LLDB尝试同时服务多个断点触发的?尝试删除除一个之外的所有断点,看看是否有帮助。

如果相关的话:我主要在XCode中使用C ++,在这里和那里都有一些Obj-C。我目前根本不使用Swift。


0

请尝试取消选中:在Edit Scheme中的每个目标上并行构建。如果您的项目有许多目标,它将节省构建时间。

编辑方案:

在此处输入图片说明


0

我一直在处理这个问题,最后终于解决了。这些行在我的〜/ .lldbinit文件中:

break set -F '-[UIView layoutIfNeeded]' -c '!(BOOL)[NSThread isMainThread]' -L objc
break set -F '-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]' -c '!(BOOL)[NSThread isMainThread]' -L objc

我注释掉了这些行,现在几乎和没有调试器一样快!


-2

我设置了238个未使用的断点。当我删除它们时,它又很快了(即使打开了诊断功能。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.