转iOS开发------使用Xcode编译器定位抛出异常的位置 -- 不错不错!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转iOS开发------使用Xcode编译器定位抛出异常的位置 -- 不错不错!!!相关的知识,希望对你有一定的参考价值。

原文网址: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()

以上是关于转iOS开发------使用Xcode编译器定位抛出异常的位置 -- 不错不错!!!的主要内容,如果未能解决你的问题,请参考以下文章

iOS_Xcode怎样准确定位到产生异常的出错代码

Xcode升级后iOS项目抛出未处理的异常

IOS+openCV在Xcode的入门开发(转)

iOS之地理位置及定位系统 -- 入门笔记

使用Xcode开发iOS语法检查的Clang插件

iOS学习使用 Xcode 开发 Clang 插件