在 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_throw
由 TFFileDescriptorContext(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 时自动继续。
我被这行代码慢慢逼疯了:
NSDictionary* rectangle3FontAttributes = @{NSFontAttributeName: [UIFont fontWithName: @"TrajanPro3-Regular" size: 18], NSForegroundColorAttributeName: theCoverLogoColor, NSParagraphStyleAttributeName: rectangle3Style};
...由于某种原因导致内部异常。该程序继续没有问题,但我的异常断点每次都会捕获它,导致视口更改我正在查看的文件并要求我在每个...上按 "continue"...单个...运行.
是否有 pragma 之类的东西可以绕过几行异常断点?
仅供参考,它甚至不是 NSException
。它在调用堆栈中列为 __cxa_throw
由 TFFileDescriptorContext(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 时自动继续。