native程序异常crash 定位解决方案

简介:

    Android程序崩溃退出的时候,会将崩溃的堆栈信息保存在/data/tombstones目录下。

该目录需要ROOT权限才能够访问。所以为了访问该路径,手机必须先ROOT破解。jni或者java

代码崩溃的信息都被记录。该目录下会有九个tombstones_0(1-9),生成的崩溃信息会循环写入

该文件中,测试之前可以讲所有的文件删除,就可以得到唯一的一个崩溃日志。生成的文件

记录了详细的堆栈信息。

    为了拷贝到电脑上,需要通过adb shell进入手机终端,然后su,获取root权限,接着

拷贝文件到sdcard上,退出adb shell,之后,通过adb pull /sdcard/tombstone_00 E:

拷贝到E盘

    该文件详细记录了代码崩溃时候的具体信息,包括了崩溃的堆栈,如果能够获取到该信息,就可以通知堆栈了解崩溃点的信息,但是一般情况下,我们看不到该文件。


    当我们发现/data目录为空的情况下,实际上表示我们没有root访问权限,(root是最高级的访问权限,而不是启动的时候的访问文件的权限,这个权限需要对android手机进行权限进行破解)


注意

    查看tombstons文件,发现很多情况下,没有提供源码错误的函数名称和源码的错误行号,可以通过ndk-stack.exe 程序对崩溃日志再次定位

    $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump tombstons

例子

D:\Development\Android\android-ndk-r10b\ndk-stack.exe–sym armeabi-v7a –dump E:\docs\tombston_01 > E:/detail.txt


附录:

    不同的手机遇到空指针的时候,处理的方式是不一样的,小米手机直接闪退,而华为平板依然能够直接运行,跳过崩溃的错误,说明测试多种机型的重要性。


参考

http://cmzx3444.iteye.com/blog/1463035


     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1408644,如需转载请自行联系原作者




相关文章
|
3月前
|
JavaScript IDE Java
bugly崩溃排查3:观察是谁调用了崩溃函数
bugly崩溃排查3:观察是谁调用了崩溃函数
22 0
VS2005利用pdb加源码定位崩溃所在代码行
VS2005利用pdb加源码定位崩溃所在代码行
|
10月前
|
Ubuntu Linux 编译器
Breakpad跨平台c++ crash捕获和生成工具使用
Breakpad跨平台c++ crash捕获和生成工具使用
|
Unix Linux C#
iOS开发:Crash异常总结与捕获
说到异常捕获,就必须要提到Crash问题,iOS中,Crash一般分为两种: 1、一种是由EXC_BAD_ACCESS引起的,原因是访问了不属于本进程的内存地址,有可能是访问已被释放的内存; 2、一种是未被捕获的目标C异常(NSException)记录,导致程序向自身发送了SIGABRT信号而崩溃。
678 0
iOS开发:Crash异常总结与捕获
iOS8切换tabar引起崩溃错误排查
iOS8切换tabar引起崩溃错误排查
97 0
|
Java Android开发
Android自定义崩溃收集器捕获java层和native层崩溃异常日志
Android自定义崩溃收集器捕获java层和native层崩溃异常日志
278 0
|
存储 运维 监控
mPass iOS崩溃与Crash⽇志符号化详解
在日常mPaas客户端运维中,经常遇到一些iOS闪退,无法直接从闪退堆栈看到原因。主要是因为iOS客户端上传的崩溃日志里的调用栈信息都是通过内存地址记录的,无法直接看到闪退的调用栈信息。如果需要定位到调用栈,需要使用符号表对闪退日志进行符号化。本文从日志收集、日志符号化原理、符号化工具等方向介绍下iOS下crash日志符号化方案。
1831 1
mPass iOS崩溃与Crash⽇志符号化详解
|
存储 Java 编译器
NDK 开发中快速定位 Crash 问题
在 NDK 开发中最熟悉的关键字非 “backtrace” 莫属,lnux 系统中进程 crash 后通过 backtrace 输出堆栈信息,开发者就是基于这些堆栈信息来定位代码问题。当然定位 Native 层代码问题最优的方式还是通过 IDE(AS、VS)或者 GDB 进行 debug 断点调试,本文针对的是使用第三方 C/C++ SDK 出现 crash 的场景。
476 0
NDK 开发中快速定位 Crash 问题
|
监控 调度
04.Android崩溃Crash库之Loop拦截崩溃和ANR
04.Android崩溃Crash库之Loop拦截崩溃和ANR
814 0
|
API iOS开发
连续启动 crash 自修复技术实现与原理解析
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - [前言](#%E5%89%8D%E8%A8%80) - [实现原理](#%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86) - [优化:降低50%以上误报机率](#%E4%BC%98%
1696 0