Xcode: 禁用 cocoa 断点

Xcode: disable cocoa breakpoints

我发现几乎不可能用断点调试我自己的代码(尤其是与 AVFoundation 和 CoreMedia 相关的代码),因为苹果制作的这个框架中有大量断点。我经常需要跨过大约 15-20 个顺序框架断点(例如 com.apple.coremedia.player.async (193): breakpoint 5.2),这些断点引用了一些汇编代码,以便最终继续执行应用程序。 我在想,有没有办法禁用苹果的框架断点,所以 xcode 只会在我的断点处停止?

在断点导航器中禁用 "All Exceptions" 断点。

此外,通过双击断点可以配置其操作。

作为 Apple 告诫不要使用异常进行程序控制的例外,Apple 已经在某些框架中这样做了,最著名的是 Core Data。如果启用 "All Exceptions",这些可能会给开发人员带来问题。

在使用 AVFoundation 和 CoreMedia 时,我遇到了同样的问题,因为系统会触发几个异常(例如,当声音播放结束时)。

我在不失去调试代码能力的情况下修复它的方法是将我的异常断点异常类型更改为 Objective-C only

编辑断点

将类型设置为 Objective-C

调试

当异常来自 Objective-C 时,我使用 this SO answer 中提供的解决方案。