如何向objc_exception_throw添加断点?

时间:2009-07-22 08:59:36

标签: objective-c iphone xcode debugging memory-leaks

这是布拉德拉森对此的回答 SO问题

如果添加两个断点,则应该能够调试这些异常。为此,请转到“运行”|显示|断点并创建两个全局断点(我在全局中断点,因为它们在我的所有应用程序中都非常有用)。第一个应命名为“objc_exception_throw”,其位置应为“libobjc.A.dylib”。第二个应该是“ - [NSException raise]”,它的位置应该是“CoreFoundation”。

现在,如果您在启用断点的情况下开始调试应用程序,它应该在抛出这些异常时中断。然后,您应该能够在调试器中看到导致异常的事件链。

现在在这个答案中,我想问一下如何添加提到的位置???

4 个答案:

答案 0 :(得分:81)

我认为布拉德的回答很清楚;希望如果您没有找到它,这可以提供帮助。

在Xcode中,从顶部菜单中单击Run>显示>断点。弹出一个新窗口。

在左侧菜单中选择“全局断点”。 “断点”列下的右侧应该有一个框,文本为“双击符号”。在此框中单击,然后键入“objc_exception_throw”。

然后,单击“位置”列下“objc_exception_throw”旁边的空格。将出现一个框,供您键入位置(在本例中为“libobjc.A.dylib”)。我制作了一个希望有用的截图:

alt text

答案 1 :(得分:45)

在Xcode 4中,这个很棒的断点可以通过Breakpoints部分的“+”按钮添加(⌘+ 6)

enter image description here

答案 2 :(得分:6)

Xcode 6中的

- 从顶部菜单

  

调试>断点>创建异常断点

答案 3 :(得分:4)

我还建议您添加+[NSException raise:format:arguments:]断点,其位置应为CoreFoundation