在 Xcode 中,有没有办法绕过一行或多行的 "All Exceptions" 断点?

In Xcode, is there a way to bypass the "All Exceptions" breakpoints just for one or more lines?

我被这行代码慢慢逼疯了:

NSDictionary* rectangle3FontAttributes = @{NSFontAttributeName: [UIFont fontWithName: @"TrajanPro3-Regular" size: 18], NSForegroundColorAttributeName: theCoverLogoColor, NSParagraphStyleAttributeName: rectangle3Style};

...由于某种原因导致内部异常。该程序继续没有问题,但我的异常断点每次都会捕获它,导致视口更改我正在查看的文件并要求我在每个...上按 "continue"...单个...运行.

是否有 pragma 之类的东西可以绕过几行异常断点?

仅供参考,它甚至不是 NSException。它在调用堆栈中列为 __cxa_throwTFFileDescriptorContext(char const *)

调用

我不能 100% 确定您正在寻找这个,但在编辑断点对话框中有一个名为 Ignore 的控件。

如果你不调试 C++ 代码,或者只是不关心 C++ 异常,只打开 ObjC 异常,那么你不会命中这个。

如果不行,可以在 lldb 中编写基于 Python 的断点命令(尽管您还不能将它们存储在断点编辑器中。)制作 Python 非常容易=31=] 根据当前停止的调用者重新启动调试器的命令。文档中有一个简单的基于 Python 的断点命令示例:

http://lldb.llvm.org/python-reference.html

您需要执行以下操作:

def AvoidTTFileDescriptorContext(frame, bp_loc, dict):
    parent = frame.thread.frames[1]
    if parent.name == "TFFileDescriptorContext":
        return False
    else:
        return True

把这个函数放在 ~/lldb_bkpt_cmds.py.

异常断点是一个普通的断点,所以如果你这样做:

(lldb) break list

在 Xcode 控制台中您可以找到它。假设是断点1,那么做:

(lldb) command script import ~/lldb_bkpt_cmds.py
(lldb) break command add -F lldb_bkpt_cmds.AvoidTTFileDescriptorContext 1

然后 Xcode 将在遇到此断点且调用方名称为 TFFileDescriptorContext 时自动继续。