http://www.cnblogs.com/easonoutlook/archive/2012/12/27/2835884.html

iOS crash 崩溃问题的追踪方法

在调试程序的时候,总是碰到crash的bug,而且一追踪就是一些汇编的代码,让人特别疑惑。

一般情况下可以通过增加两天断点来解决此问题,方法介绍如下:

基本上有错误分为以下几种类型:

signal(SIGABRT, MySignalHandler);

signal(SIGILL, MySignalHandler);

signal(SIGSEGV, MySignalHandler);

signal(SIGFPE, MySignalHandler);

signal(SIGBUS, MySignalHandler);

signal(SIGPIPE, MySignalHandler);

SIGABRT和EXC_BAD_ACCESS较为特殊,算是比较好跟进。

SIGABRT是系统报错,在memery warning之后,系统会把程序强制退出,报的就是这个错误。

EXC_BAD_ACCESS 大多数时候是内存提前释放而引起的问题,或者访问的方法不存在引起的。

追踪程序的调用stacktrace的方法,跟踪问题:

一般出错了之后出现的常见界面,再熟悉不过了。。

切换到breakpoint界面,拖动底端的slider按钮,显示调用堆栈

虽然调用堆栈已经出来了,但是都是一堆的汇编代码,无法给予明确的信息。。

剩下的就是今天要讲的问题:添加Symbol breakpoint  Exception breakpoint

Exception breakpoint添加 的添加步骤

一、Exception breakpoint 的添加。

1、切换到breakpoint 视图界面

2、点击最底端的"+"按钮,添加Add Exception BreakPoint,这个就是捕获所有的exception, 貌似stackoverflow上说,bad_access那种错误无法捕获的,这个用于捕获那些SIGSEGV 的错误。

3、添加完成之后的界面。

二、Symbolic breakpoint的添加

前两步和一 基本是一样的,不截图了,只是在第二步选择的时候选 Add Symbolic BreakPoint

第三步截图;添加完成之后添加上objc_exception_throw

完成,添加完成只两个断点之后,程序中很多异常也可以捕获了,直接定位到出问题的位置。

当然程序中最好也加上异常处理的代码,可以参考这个处理,一般都是这个方式处理的

http://www.cocoachina.com/newbie/tutorial/2012/0829/4672.html

最新文章

  1. Linux2 在Linux(CentOS)上配置SSH免登陆
  2. GitHub的多人协同开发配置
  3. 绑定: 通过 Binding 绑定对象, 通过 x:Bind 绑定对象, 通过 Binding 绑定集合, 通过 x:Bind 绑定集合
  4. uva147 Dollars ——完全背包
  5. delphi android 中 Toast 的实现(老外写的UNIT)
  6. 使用 Microsoft Word 发布博客文章
  7. UITextView 不左上角显示
  8. iOS实例下载:使用腾讯的SDK将新浪微薄嵌入到应用中
  9. error: variable '__this_module' has initializer but incomplete type错误解决
  10. WINDOWS下简单操作SQLITE3
  11. 转一篇NGINX+UWSGI+PYTHON+DJANGO部署文档
  12. SQL Server中各个系统表的作用
  13. TypeError: Cannot read property 'style' of null 错误解决
  14. js设置,获取,删除Cookie
  15. 二、IIS部署WebApi
  16. [hdu6183][Color it]
  17. mysql 8.0 ~ innodb与变量优化
  18. 使用应用链接来连接 Jira 和 Confluence 6
  19. Docker Compose 介绍安装
  20. pytorch如何能够保证模型的可重复性

热门文章

  1. Wannafly挑战赛4. B
  2. C# 设置窗口大小为不可调、取消最大化、最小化窗口按键
  3. java变量、数据类型
  4. 初见spark-02(RDD及其简单算子)
  5. __bridge 使用注意
  6. USACO Section2.3 Money Systems 解题报告 【icedream61】
  7. Jmeter 场景设计
  8. 常用模块(shutil copy、压缩、解压)
  9. 融合模型Aggregation
  10. Linux大小端模式转换函数