如何在objc_exception_throw中添加断点?


80

这是从这个布拉德·拉尔森的答案 SO问题

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

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

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


有人有XCo​​de 4的屏幕截图/菜单路径吗?
成功

2
在Apple Dev论坛上查看此线程,以获取有关如何在XCode 4中执行此操作的说明:devforums.apple.com/thread/68421
Andy Sinclair,

Answers:


81

我认为布拉德的答案很明确;如果您不清楚,希望可以对您有所帮助。

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

在左侧菜单中选择“全局断点”。在“ Breakpoint”列下的右侧应有一个框,其中包含文本“ Double-Click for symbol”。单击此框,然后键入“ objc_exception_throw”。

然后,单击“位置”列下“ objc_exception_throw”旁边的空间。将出现一个框,供您键入位置(在本例中为“ libobjc.A.dylib”)。我制作了一个屏幕快照,希望能对您有所帮助:

替代文字


效果很好。谢谢你的细节。
罗布·西格尔

17
在Xcode 4中,有一个断点导航器,您可以在其中添加这些内容。

您也可以在控制台中安装打印异常描述的脚本,必须具有!
DanSkeel 2015年


6

在Xcode 6中-从顶部菜单

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


其他答案已更改,此答案是正确的答案,截至2017年4月/ Xcode8
Josh

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.