xcode7.3怎么设置全局断点

xcode7.3怎么设置全局断点,第1张

很多时候,在调试程序的时候,我们很想马上知道错误的代码在哪一行, 而不想大概设置一个断点,逐行调试发现最终是哪一行代码出问题导致程序崩溃。 可以使用下面这个办法快速定位问题代码。

进入断点窗口

首先需要为-[NSException raise]创建一个断点。 选择底部的“+”, 单击Add Symbolic Breakpoint..., 输入-[NSException raise],然后按Done键。

其次,再按照上面的步骤添加另外一个全局断点objc_exception_throw。

现在,运行的程序有异常抛出的时候,调试器就会中止程序运行并指向有问题的代码行。

下面就介绍如何在iOS中实现:

1. 在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的回调动作

代码如下:

NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler)

官方文档介绍:Sets the top-level error-handling function where you can perform last-minute logging before the program terminates.

UncaughtExceptionHandler是一个函数指针,该函数需要我们实现,可以取自己想要的名字。当程序发生异常崩溃时,该函数会得到调用,这跟C,C++中的回调函数的概念是一样的。

2. 实现自己的处理函数

代码如下:

void UncaughtExceptionHandler(NSException *exception) {

NSArray *arr = [exception callStackSymbols]//得到当前调用栈信息

NSString *reason = [exception reason]//非常重要,就是崩溃的原因

NSString *name = [exception name]//异常类型

NSLog(@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr)

}

以上代码很简单,但是带来的作用是非常大的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11663911.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存