1.真机连接电脑
2.使用 PP助手或者其他第三方工机
3.然后打开崩溃日志
寻找 IPS文件
4.查看具体的崩溃类型,主要看以下字段 Exception Type&& Exception Code
Exception Type: EXC_CRASH (SIGKILL) //异常的类型 Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000118 //异常子类型
我手机中 WeChat展示形式如下: Exception Code: 0x0000000000000000, 0x0000000000000000 //异常地址 Exception Note: EXC_CORPSE_NOTIFY//描述 Termination reason:Namespace SPRINGBOARD, Code 0x8badf00d //终止原因 Triggered by Thread: 0 //异常发生的线程(0为主线程,其他为子线程)
1、Exception Type |
补充信息 |
具体原因 |
1)EXC_BAD_ACCESS 此类型的Excpetion是我们最长碰到的Crash,通常用于访问了不改访问的内存导致。一般EXC_BAD_ACCESS后面的”()”还会带有补充信息。 |
SIGSEGV |
: 通常由于重复释放对象导致,这种类型在切换了ARC以后应该已经很少见到了。 |
SIGABRT:。 |
收到Abort信号退出,通常Foundation库中的容器为了保护状态正常会做一些检测,例如插入nil到数组中等会遇到此类错误 |
|
SEGV:(Segmentation Violation), |
代表无效内存地址,比如空指针,未初始化指针,栈溢出等; |
|
SIGBUS: |
总线错误,与 SIGSEGV 不同的是,SIGSEGV 访问的是无效地址,而 SIGBUS 访问的是有效地址,但总线访问异常(如地址对齐问题) |
|
SIGILL: |
尝试执行非法的指令,可能不被识别或者没有权限 |
|
2)EXC_BAD_INSTRUCTION |
此类异常通常由于线程执行非法指令导致 |
|
3)EXC_ARITHMETIC |
除零错误会抛出此类异常 |
|
除零错误会抛出此类异常 |
|
|
2、Exception Code |
0xbaaaaaad |
此种类型的log意味着该Crash log并非一个真正的Crash,它仅仅只是包含了整个系统某一时刻的运行状态。通常可以通过同时按Home键和音量键,可能由于用户不小心触发 |
0xbad22222 |
当VOIP程序在后台太过频繁的激活时,系统可能会终止此类程序 |
|
0x8badf00d |
这个前面已经介绍了,程序启动或者恢复时间过长被watch dog终止 |
|
0xc00010ff |
程序执行大量耗费CPU和GPU的运算,导致设备过热,触发系统过热保护被系统终止 |
|
|
|
5.定位具体的问题在哪里???
这个需要xcode进行符号化,目前先做到这里吧