Xcode:禁用Cocoa断点

3

我发现在调试我的代码时(特别是与AVFoundation和CoreMedia相关的代码),由于苹果公司在这些框架中设置了大量断点,使用断点进行调试几乎是不可能的。经常需要跨越约15-20个连续的框架断点(例如com.apple.coremedia.player.async(193):断点5.2),这些断点涉及一些汇编代码,才能最终继续应用程序的执行。

我想知道是否有任何方法可以禁用苹果公司的框架断点,这样Xcode只会在我的断点处停止?


3
你是不是在谈论你添加的全局异常断点?因为据我所知,在框架中“分发”断点是不可行的。 - Guillaume Algis
1
阅读此内容以了解断点:http://jeffreysambells.com/2014/01/14/using-breakpoints-in-xcode - Mrunal
谢谢大家!我没有表达清楚。我已经添加了“所有异常”,但我需要它来找出愚蠢的“EXC_BREAKPOINT UNKNOWN”崩溃。是否可能有“所有异常”断点并禁用系统框架断点? - Nikita Arkhipov
2个回答

6
使用AVFoundation和CoreMedia时,我遇到了相同的问题,因为系统会触发多个异常(例如当声音播放结束时)。为了解决这个问题而不失去调试代码的能力,我将我的异常断点异常类型更改为“仅限Objective-C”。

编辑您的断点

edit-breakpoint

将类型设置为Objective-C

select-exception-type

调试

objective-c-exceptions

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


2
在断点导航器中禁用“所有异常”断点。
此外,通过双击断点,可以配置其操作。
作为对苹果关于不要使用异常进行程序控制的建议的例外,在某些框架中(尤其是核心数据),苹果已经这样做了。如果启用了“所有异常”,这些可能会给开发人员带来问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接