原文网址:http://blog.csdn.net/runintolove/article/details/51297734
虽然Objective-C对异常进行了封装,但日常敲代码的时候,往往会因为马虎,代码段出现了一点小小的错误,自己却发现不了。当然,很多时候,Xcode就会直接报错(也就是俗话说的崩了)告诉我们,这个时候只要根据报出的异常堆栈,就可以找到错误的具体位置。
可是有一种情况,相信大家肯定遇到过,程序不崩或者崩了但是没有告诉我们异常堆栈,但错误原因告诉我们了:
*** First throw call stack:
(0x18336ae38 0x1829cff80 0x183e2495c 0x183ca5968
0x183ca5550 0x183ca5100 0x1004cbdcc 0x1004cb454
0x1884a80e4 0x185e4ea28 0x185e49634 0x185e494f4
0x185e48b24 0x185e4886c 0x1884aaef4 0x183321124
0x183320bb8 0x18331e8b8 0x183248d10 0x184b30088
0x188515f70 0x1004c2e34 0x1
libc++abi.dylib: terminating with uncaught exception of type NSException
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
从代码来看,我们肯定的是某个地方抛出了异常,但是”某个地方”对于程序员来讲是不是很崩溃呢,总之楼主会很崩溃,虽说最终能找到异常触发点,但总会浪费许多开发时间。这里就写一下如何让Xcode帮我们自动的定位到异常抛出位置,用来节约开发时间,希望能帮到看到博文的朋友。
不得不说Xcode这个编译器真的很强大,自己对它的了解越来越自感觉不够,这种情况,对Xcode进行相应的断点设定,就可以将代码定位到异常的抛出位置,当出现异常抛出的时候,Xcode就直接定位到该代码行:
1、找到Xcode的Breakpoint组,找到左下角的+键,位置如下图:
2、点击+键,能够添加新断点,项目用的是Objective-C,所以这里就添加一个异常断点,当然Swift也可以添加一个Error断点,根据不同的情况可以自定义添加。
3、添加完毕之后,这里就会出现一个全局的断点,从后面的描述可以看出,这个断点是所有异常的断点。
设置完毕后,再运行一次抛出异常的程序,此时断点就自动的停留在了抛出异常的语句上,如图:
这样开发者们就不需要在看不到异常堆栈的情况下,花大量时间来寻找异常抛出点了Thanks()
时间: 2024-11-07 15:41:41