让程序停在发生异常的地方——Xcode使用小技巧一则

昨晚偶然读到一篇文章,收获很大,不仅仅是技术上的,而且还发现,只有小孩子才去关注个人博客的主题、样式,大神只关注博文的质量和价值。 

本文给大家分享一个Xcode使用技巧。初学者可能会遇到这种情况,程序崩了,Xcode总是停在并高亮程序main函数中的代码。这样我们没办法看到真正抛出异常的地方,也就没办法愉快地解决问题了。

程序崩溃

对于一些异常(比如段错误等),可能这是合理的,但是有些时候从Xcode给出的提示来看,它明明知道是什么原因导致的crash!
* Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘* -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[3]’

为了解决这个问题,我们在Xcode中位所有异常设置一个断点即可。

在下图所示的位置上,添加一个断点,选择“Add Exception Breakpoint”,这时一个新的断点就会被创建
设置全局断点

编辑这个断点,设置其break的时机为“On Throw”

设置全局断电

再次运行会crash的程序,如果抛异常的地方是你自己写的代码,Xcode会在该处停住,但是如果抛异常的地方是在一些第三方库,由于它们已经被编译,可能Xcode不能精准的知道哪一行代码导致了exception。

最后照例送大家一句话。

每次仇恨一个东西,你就失去了向它学习的机会。

本文参考文献

xcode-doesnt-show-the-line-that-causes-a-crash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值