objc_msgSend arm64 崩溃问题】的更多相关文章

http://blog.csdn.net/chenyong05314/article/details/42121001 2014-12-24 10:49 878人阅读 评论(0) 收藏 举报 转载自:  http://iloss.me/post/kai-fa/2014-12-09-objc_msgsend 之前一直用objc_msgSend,但是没注意apple的文档提示,所以突然objc_msgSend crash了. 之前32位的时候没问题,然后转换为64位之后就会发生EXC_BAD_ACC…
漫谈iOS Crash收集框架   Crash日志收集 为了能够第一时间发现程序问题,应用程序需要实现自己的崩溃日志收集服务,成熟的开源项目很多,如 KSCrash,plcrashreporter,CrashKit 等.追求方便省心,对于保密性要求不高的程序来说,也可以选择各种一条龙Crash统计产品,如 Crashlytics,Hockeyapp ,友盟,Bugly 等等. 是否集成越多的Crash日志收集服务就越保险? 自己收集的Crash日志和系统生成的Crash日志有分歧,应该相信谁?…
重点:Triggered by Thread这句话后边的线程号,快速定位问题出现在那个线程,是否是你的锅:Triggered by Thread所指的线程表示导致异常.崩溃的线程 下边内容转自简书 简介 当一个应用程序崩溃, 会产生一个崩溃报告(crash report) ,并存储到那个设备.崩溃报告描述了应用程序崩溃的条件,大多数情况会包含每个执行线程的一个完整的回溯,对我们调试应用程序的问题是非常有用的.你应该查看崩溃报告来了解你应用程序有什么崩溃,然后尝试修复它们. 崩溃报告必须被符号化(…
未符号化的崩溃日志就象一本天书,看不懂,更别谈分析崩溃原因了.所以我们在分析日志之前,要把日志翻译成我们可以看得懂的文字.这一步我们称之为符号化. 在iOS Crash分析(文一)中已经提到过符号化的两种方式: 1.利用Xcode符号化 2.利用symbolicatecrash脚本符号化 其实这两种分析方式都使用了同一个工具符号化:***atos***.atos是苹果提供的符号化工具,在Mac OS系统下默认安装.使用***atos***符号化需要dsym文件.dsym文件是在编译工程的时候生成…
iOS的崩溃日志配合dsym文件可以找到崩溃时的backtrace,这是解决崩溃的最重要的信息. 如果是在同一台mac上打包, 导入crash log时候会自动将backtrace符号化,可以看到方法名, 文件名和行号 但是,有时候发版的包不是在你的mac上打包的,xcode找不到对应的符号表, backtrace没能符号化如下所示: Last Exception Backtrace:0 CoreFoundation 0x2cb535f2 __exceptionPreprocess + 1221…
前言 我们在开发App过程中,因为连接到控制台,所以遇到问题会很容易找到问题代码.但是对于线上的App出现Crash的时候,我们不可能通过这种方式,也不现实,所以我们只能通过收集Crash信息,来解决Bug.而这种收集Crash信息并且分析定位到具体代码的第三方SDK很多.但是今天我们来自己实现一下. 收集 Crash 信息 Apple提供了NSException类来帮助我们收集异常信息. NSException is used to implement exception handling a…
Incident Identifier: 55864905-937C-4172-B435-2ACA13D3070ECrashReporter Key: b85cab13431711060a5fab555aad7f0f095bd843Hardware Model: iPhone7,2Process: crashTest1111 [5218]Path: /private/var/mobile/Containers/Bundle/Application/0266F752-9ECC-42D5-BF0C-…
1名词解释 1.1. UUID 一个字符串,在iOS上每个可执行文件或库文件都包含至少一个UUID,目的是为了唯一识别这个文件. 1.2. dwarfdump 苹果提供的命令行工具,其中一些功能就是查看可执行文件或库文件的UUID.示例: dwarfdump --uuid 应用名称.app/应用名称 dwarfdump --uuid 应用名称.dSYM 1.3. symbolicatecrash 苹果提供的命令行工具,可以将crash日志符号化为可读的堆栈信息.XCode6/XCode7版本中,…
作为一名应用开发者,你是否有过如下经历?   为确保你的应用正确无误,在将其提交到应用商店之前,你必定进行了大量的测试工作.它在你的设备上也运行得很好,但是,上了应用商店后,还是有用户抱怨会闪退 !   如果你跟我一样是个完美主义者,你肯定想将应用做到尽善尽美.于是你打开代码准备修复闪退的问题……但是,从何处着手呢?   这时iOS崩溃日志派上用场了.在大多数情况下,你能从中了解到关于闪退的详尽.有用的信息.   通过本教程,你将学习到一些常见的崩溃日志案例,以及如何从开发设备和iTunes C…
公司的项目中集成了UM的统计功能,UM统计可以统计app的用户新增,版本分布,日志崩溃等信息,打开错误分析按钮,则可能会看到很多崩溃的日志信息 选择编辑可以选择更多的版本号 点击列表中的一个崩溃日志,进入可以看到内容大致如下 针对这样的内容,我表示一脸懵逼,这种方式展现的日志无法直接看懂,当然也可以通过一些方法来进行解析具体参考我的文章iOS crash日志分析,我们这里提供另外一种方式来解析崩溃日志,我们今天的主角dSYMTools 使用dSYMTools需要注意以下几点 * 找到dSYM文件…
AppStore审核被拒,返回crashLog.txt文件,可是打开后都是十六进制的地址,我们可以使用Xcode自带的 symbolicatecrash 解析得到我们需要的详细崩溃信息crashLogEnd.crash 1.在桌面创建一个crash文件夹 2.首先找到symbolicatecrash工具存放的地址(Xcode显示包内容亦可找到) 打开终端输入指令: find /Applications/Xcode.app -name symbolicatecrash -type f 稍等片刻得到…
1.iOS瘦身之armv7 armv7s arm64选用 机器对指令集的支持是向下兼容的,因此armv7的指令集是可以运行在iphone5S以上的,只是效率没那么高而已~ 但是由于苹果要求必须支持arm64,因此这个架构是必须存在的.在xcodeTARGETS里边Architectures: tup.png Architecture : 指你想支持的指令集. Valid architectures : 指即将编译的指令集. Build Active Architecture Only : 只是否…
前言 比赛的一个 arm 64 位的 pwn 题,通过这个题实践了 arm 64 下的 rop 以及调试环境搭建的方式. 题目文件 https://gitee.com/hac425/blog_data/tree/master/arm64 程序分析 首先看看程序开的保护措施,架构信息 hac425@ubuntu:~/workplace$ checksec pwn [*] '/home/hac425/workplace/pwn' Arch: aarch64-64-little RELRO: Part…
Xcode支持崩溃日志自动符号化,前提是本地有当时Build/Archive生成的dSYM文件,iOS崩溃日志符号化后,可以帮助开发者更好的定位问题,但如果dSYM文件丢失或拿到的崩溃日志不是标准的crash log,如何定位crash呢,笔者结过尝试发现一样可以定位到具体函数. 在无dSYM文件情况下,之所以无法解析出崩溃地址对应的函数名,是因为Xcode在导出ipa时会去除Symbol Table(符号表)的非系统符号部分.这时address无法对应函数名,所以无法确定是在哪个函数或bloc…
Bugly-Crash监控能让我们及时的掌控应用的Crash,并快速修复.这种情况就在于我们把应用发布出去了,但是用户那边有着各种各样我们想象不到的系统崩溃,我们无法通过简单的控制台捕获错误信息和崩溃的堆栈内容,那么我们可以利用Bugly这样一个平台,实时查获我们的crash信息. 1.首先到http://bugly.qq.com 注册一个app ID,要注意iOS和安卓是分开的ID 2.注册成功后,就可以下载对应版本的SDK 3.打开SDK的文件夹,可以看到有libc++ 和libstdc++…
问题描述:运行到LuaStack::init() 崩溃 原因: luajit不支持arm64 解决方案:编译luajit64位静态库 a.可以直接下载别人编译好的库,然后直接覆盖cocos2d\external\lua\luajit\prebuilt\ios\libluajit.a ,http://www.cocoachina.com/bbs/read.php?tid=281157 页面中提供了下载连接 b.编译官方提供的64为版本,源码地址:https://github.com/cocos2d…
前言:crash log 对 定位崩溃问题 ,并且不容易复现,尤其是及时对appstore 上正在运营的 app 的迭代改进来说 非常重要. 1 crash两种情况 1.1 测试环境下 追踪bug 1.2 App Store  上应用 追踪bug 我们主要讨论在App Store  上应用 追踪bug 的情况 2获取crash log信息途径 2.1自己收集,做错误分析 错误趋势: 收集崩溃信息 存储 上传服务器 (时机可以是再一次打开应用时候同步)  方法: // 将系统提供的获取崩溃信息函数…
参考: http://blog.csdn.net/diyagoanyhacker/article/details/41247367 http://blog.csdn.net/diyagoanyhacker/article/details/41247389 http://blog.csdn.net/diyagoanyhacker/article/details/41247411 http://www.cnblogs.com/smileEvday/p/Crash1.html 未符号化的崩溃日志就象一…
上周在做噪音检测so集成中,遇到不同的so库打包到 APK 时,安装在某些机器上,出现 java.lang.UnsatisfiedLinkError 加载失败. 为此,深究了一下原理,和给出了解决方案. 原理 Android 系统本质是一个经过改造的 Linux 系统.最早,Android 系统只支持 ARMv5 的 CPU 构架,随着 Android 系统的发展,又加入了 ARMv7 (2010), x86 (2011), MIPS (2012), ARMv8, MIPS64 和 x86_64…
解析友盟错误信息重要指令: dwarfdump --arch=arm64 --lookup 0x1001edbc4 /Users/zhoujunbo/Library/Developer/Xcode/Archives/2016-06-21/SSPendi\ 16-6-21\ 下午2.23.xcarchive/dSYMs/SSPendi.app.dSYM/Contents/Resources/DWARF/SSPendi 0x1001edbc4是友盟报错的地址,我们只需要把地址换为自己app的地址即可…
[NSNull null]是一个对象,其类为NSNULL(isa):里面没有任何变量.函数.和实现. nil的处理展示出消息机制的优越性,相对于函数调用的空指针处理. ENTRY objc_msgSend # check whether receiver is nil teq     a1, #0 itt eq moveq   a2, #0 bxeq    lr # save registers and load receiver's class for CacheLookup stmfd  …
最近在学习 极客时间Android开发高手课 老师推荐了Breakpad开源库来采集native 的crash1.为什么要使用Google Breakpad? 我们在开发过程中,Android JNI层Crash问题或者我们引用的第三方.so库文件报错,都是一个比较头疼的问题.相对Java层来说,由于c / c ++造成的崩溃没有输出如同Java的异常Strace堆栈信息,所以定位问题也是个比较艰难的事情. 不知道 JNI 的同学可以点击 Android studio 下 JNI 开发实例  了…
崩溃的分析 最近修复了一些iOS项目的崩溃,想分析总结一下这些崩溃的原因,以及预防.崩溃的原因一般有下面几种: 内存访问错误(这个出现的比较多,原因多种多样) 非法指令的执行(超出权限范围内的指令) 非法的IO访问 系统调用参数出错 指令条用参数错误(除以0之类) 想分析用户崩溃,收集崩溃的日志非常重要,我们项目中用的是Twitter的Crashlytics,现在叫fabric, 能够收集到比较详细的崩溃信息:各线程的崩溃栈和设备的一些信息.有一个小问题就是没有收集到各个 寄存器里面的值(看是不…
一.造成崩溃的原因 1.代码中存在bug 2.Watchdog 超时机制 3.用户强制退出 4.低内存终止 5.其他违法系统规则的操作,大部分是内存问题 二.崩溃的类型 1.信号错误类 (1)EXC_BAD_ACCESS (2)SIGSEVG (3)SIGBUS (4)SIGTRAP (5)EXC_ARITHETIC (6)SIGILL (7)SIGABRT (8)Watchdog 超时 2.异常类 (1)NSRangeException(越界异常) NSRangeException是iOS开发…
如何正确的hook方法objc_msgSend 前言 如果希望对 Objective-C 的方法调用进行 log, 一个很好的解决方法就是 hook 方法 objc_msgSend, 当然想到的就是利用 InlinkHook 直接 hook 完事, 然而 objc_msgSend 是一个可变参数函数, 这就有点蛋疼了. objc4-680, 和目前的 objc4-709 没有有很大出入. 以下 在举例 arm 相关时使用 objc4-680, 说明 x64 时使用 objc4-709 整个代码使…
日志主要分为六个部分:进程信息.基本信息.异常信息.线程回溯.线程状态和二进制映像. 我们在进行iPhone应用测试时必然会在"隐私"中找到不少应用的崩溃日志,但是不会阅读对于很多人来说简直头疼.在此为大家详细介绍一下具体的阅读方法,希望大家可以更快的定位BUG.首先我们先看一下从iPhone中随机抽出的一个Crash日志: //1. 进程信息 Hardware Model: iPhone9,1 Process: com.sogou.sogouinput.BaseKeyboard[44…
初学者学习Linux系统地址转换时,如果只是学习理论,又或者研读代码,那可能感觉比较枯燥.此时如果可以利用某些工具实际观察一下地址转换的过程,那可能会给枯燥的内核学习带来些微的乐趣.crash tool是一款内核调试工具,常用来分析内核崩溃问题.我们可以手动触发内核崩溃,然后借用该工具来分析当时系统的运行情况,当然也包括内存的运行情况. 本文基于ARMv8 AArch64 (简称ARM64)架构,Linux 4.14内核来讲述.首先回顾一下内存访问的相关知识点. 1.ARM内存访问的硬件架构 A…
在移动应用性能方面,崩溃带来的影响是最为严重的,程序崩了可以打断用户正在进行的操作体验,造成关键业务中断.用户留存率下降.品牌口碑变差.生命周期价值下降等影响.很多公司将崩溃率作为优先级最高的技术指标,因此程序崩溃的监控与收集就成为了一项必不可少的工作.以58同城App为例,其采用了腾讯Bugly作为发布环境下App异常数据的收集工具. 一直以来,为降低App崩溃率,58同城App的每个版本都有专门负责监控线上崩溃以及解决问题的同学.根据汇总统计,Bugly上收集的崩溃大部分都是野指针崩溃和疑难…
崩溃提示:Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <CALayerArray: 0x14df0bd0> was mutated while being enumerated.' 当程序出现这个提示的时候,是因为你一边便利数组,又同时修改这个数组里面的内容,导致崩溃,网上的方法如下: NSMutableArray * arrayTemp = xxx; NSArr…
Android PopupWindow Dialog 关于 is your activity running 崩溃详解 [TOC] 起因 对于 PopupWindow Dialog 需要 Activity 作为容器,并于其生命周期联系在一起.在Activity 还没有初始化完成时,此时我们调用 PopupWindow Dialog 的show()方法就会抛出异常: throw new WindowManager.BadTokenException("Unable to add window --…