天天看点

android闪退 日志分析 SIGSEGV

之前一次测试 有很多闪退 大部分都是 SIGSEGV(SEGV_MAPERR) 

android闪退 日志分析 SIGSEGV
android闪退 日志分析 SIGSEGV

真是头疼  从未涉及过这类问题  

挠挠头 开始刨坑之旅 

这是U3D 5.2.2的版本

首先要解决这些这些看不懂的堆栈信息 ,bugly意思是 提交制表符文件 来解析 堆栈内存值来找到相应方法位置

这个制表符文件让我头疼了一阵  我之前是解压APK 找到lib文件下的l.so文件 通过bugly上面的方法来获取制表符文件提交到网站上  但是最后出来的 和上图一样 根本没找到位置就这些闪退也就暂时搁置了

突然有一天我在用手机测试性能 进游戏突然闪退 但是连接logcat 看到了一些堆栈信息

android闪退 日志分析 SIGSEGV

心想这个问题概率太高 再尝试下解决

http://dev.qq.com/topic/5901b8df55c328b21aeb6d74  这个BUGLY上纤细介绍 上面的信息的简介

通过 各种神奇搜索 准备使用 NDK库来定位错误信息位置

方法

1.下载NDK (百度搜索下 官网下载即可)

2.解压APK内的.so文件(解压后搜索 下文件夹下.so文件 就是了)

3.通过命令行 

进入 文件夹 D:\android-ndk-r14b-windows-x86_64\android-ndk-r14b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\

执行这个命令

用这个addr2line 参数 -c -f -e .so的文件 后面是堆栈地址(.so我就直接放到了同一个目录)

bin>arm-linux-androideabi-addr2line -C -f -e libunity.so f7218610(可以输入多个地址 会全部显示出来)

失败了。。返回都是 ????问好

想想也是BUGLY内部的方法大概也是这样 都没输出到位置 我这样失败也是正常

突然想到 这是release 版本 也许加密 混淆了 我就又打了debug版本的包 解压APK

 发现果然.so文件从14M 变成了 20M 突然我就兴奋了 再执行上一步操作 堆栈出来了

android闪退 日志分析 SIGSEGV

果然如此行了 查问题吧 这个坑是抛出来了 开始抛下个坑吧