在调试程序的时候,总是碰到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
转自:http://www.cnblogs.com/easonoutlook/archive/2012/12/27/2835884.html
相关推荐
1. **Crash日志概述**:当iOS应用程序因某种原因无法正常运行并导致程序崩溃时,系统会自动生成一个Crash日志。这个日志包含了崩溃发生时的应用程序状态、堆栈跟踪信息、系统信息等,是开发者定位问题的关键。 2. *...
在iOS应用开发中,调试和解决崩溃问题是一项关键任务。iOS Crash Logs Tool 是一个专为Windows用户设计的开源工具,用于解析和符号化iOS设备上应用程序的崩溃日志。通过这个工具,开发者能够更深入地理解应用在运行...
"iOS捕获程序异常崩溃记录、App信息等"这一主题就是关注如何在iOS应用中实现这样的功能。通过创建自定义的崩溃捕获机制,并将相关信息上传至服务器,我们可以获取详细的崩溃日志和系统信息,从而更好地诊断和解决...
"iOS无痕埋点Crash方案"关注的正是这两个核心领域:应用性能监控和异常崩溃处理。无痕埋点技术用于追踪用户行为,而Crash方案则关注于在应用程序出现错误时提供有效的故障报告和恢复机制。 首先,让我们深入理解...
本文将详细介绍iOS Crash的常规跟踪方法以及如何集成Bugly进行更高效的问题定位。 首先,我们来了解一下iOS Crash的常规跟踪方法: 1. **模拟器运行**:在Xcode中运行应用,如果发生崩溃,Xcode会立即停止并显示...
在iOS开发中,崩溃(Crash)是开发者最不愿意遇到的问题,尤其是启动时的崩溃(Launch Crash)。这类问题不仅影响用户体验,还可能导致数据丢失和应用评价下降。本文将深入探讨如何理解和解决iOS启动crash的问题。 ...
在iOS应用开发中,程序崩溃是开发者们常常面临的问题,特别是在用户实际使用环境中,崩溃往往会导致数据丢失,用户体验下降,甚至影响应用评价。"CrashCatched" 是一个旨在优化iOS程序崩溃处理的解决方案,它提供了...
通过Xcode的Organizer或第三方工具(如Crashlytics、Firebase Crash Reporting等),开发者可以方便地查看和管理这些日志,以便追踪和修复错误。 在实际开发中,为了提高用户体验,我们不仅要捕获异常,还要尽可能...
- Sentry:另一个流行的错误追踪平台,可以集成到iOS应用中,提供实时的crash报告和用户反馈。 - UncaughtExceptionHandler:通过设置全局未捕获异常处理器,可以捕获并处理未被捕获的异常,防止应用崩溃。 4. **...
当我们遇到“Crash log on target platform”的问题时,这意味着在特定的目标平台上(如Android、iOS或某个特定的操作系统)遇到了应用程序崩溃的情况。为了深入理解并解决这个问题,我们需要详细地查看和解析错误...
为了更有效地追踪和分析崩溃,开发者可以集成第三方服务,如Firebase Crashlytics、HockeyApp或Unity Analytics。这些服务不仅能收集崩溃日志,还能提供详细的崩溃统计,帮助定位问题。 1. Firebase Crashlytics:...
主要功能包括:解析应用崩溃时产生的符号信息、转换为可读性强的日志格式、便于开发者追踪和修复问题。 #### 1.4 配置参数 配置参数主要包括AppID、AppKey、应用版本号等,这些参数通常存储在`settings.txt`配置...
此外,为了有效地追踪和解决iOS应用中的崩溃问题,开发者需要掌握iOS Crash的日志查看方法,以及如何集成第三方工具如Bugly进行崩溃日志收集和分析。同时,了解如何在Xcode 9中避免导致崩溃的问题,以及在App连续...
1. 移动应用程序质量问题:移动应用程序的崩溃率高达20%,用户遇到过Crash的比例很高,影响用户体验和满意度。 2. 实时化处理技术:腾讯移动分析Crash系统使用实时化处理技术,快速处理大量数据,实时还原 Crash...
"ios-打印log和奔溃日志.zip"这个压缩包提供了一种方法来收集和分析应用的运行情况,以辅助开发者定位并修复问题。以下是关于iOS应用中日志打印、奔溃日志分析以及相关知识点的详细说明: 1. **日志打印**: - **...
- **Crash Logs**:当应用崩溃时,Xcode会收集崩溃日志,便于分析错误原因。 总结起来,Xcode_iOS_13.5.zip提供的是一个完整的iOS 13.5真机调试环境,包含Xcode的全部功能。开发者可以通过这个压缩包,快速搭建调试...
CrashReporter是一个开源项目,它的主要功能是捕获应用程序运行时的崩溃信息,并将这些信息详细记录下来,以便开发者能够追踪和分析问题的原因,从而提高软件的稳定性和可靠性。这个工具对于软件开发和维护阶段非常...
它能够帮助开发者追踪并解决应用程序中的运行时错误,提供详细的崩溃日志,以及用户反馈功能,从而提升应用的稳定性和用户体验。在Android和iOS平台上,Crashlytics广泛应用于故障排查和性能优化。 首先,我们来看...
当发生多线程异常时,使用`malloc_info -S 0x地址`可以查看对象的内存分配历史,帮助追踪问题。 1.8 寄存器查找对象 通过查找特定内存地址,如`malloc_info -S 0x地址`,可以确定对象是否正确分配和使用,解决类似`...
在IT领域,崩溃日志是诊断和解决软件问题的...对于"Crash-Logs-master"这样的文件名,可能表示这是一个关于崩溃日志的项目仓库,其中可能包含不同设备或应用的崩溃日志实例,用于研究和学习如何解析和处理这些日志。