用ndk-stack分析应用native程序异常crash掉
adb logcat | "/home/hxl/bin/android-ndk-r10d/ndk-stack" -sym "/home/hxl/plu/BadGame/proj.android/obj/local/armeabi/obj/local/armeabi"
这几天在做android下的音频播放器,使用ffmpeg做解码器,过程中出现一个问题,执行的时候出现下面这个问题:
- 03-24 15:05:37.094: I/DEBUG(3223): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
 - 03-24 15:05:37.094: I/DEBUG(3223): Build fingerprint: 'MOTO/olympus/olympus:2.3.5/4.5.3-118_OLY-14/111106:user/release-keys'
 - 03-24 15:05:37.094: I/DEBUG(3223): pid: 3214, tid: 3222 >>> com.lrc.tingjue <<<
 - 03-24 15:05:37.094: I/DEBUG(3223): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000008
 - 03-24 15:05:37.094: I/DEBUG(3223): r0 afd464e4 r1 00000002 r2 00000002 r3 afd464b0
 - 03-24 15:05:37.094: I/DEBUG(3223): r4 00000000 r5 afd464b0 r6 000b2808 r7 00000004
 - 03-24 15:05:37.094: I/DEBUG(3223): r8 45738858 r9 4557ed78 10 002c1ea0 fp 00000000
 - 03-24 15:05:37.094: I/DEBUG(3223): ip afd464d4 sp 457387e0 lr afd11108 pc afd13fd4 cpsr 00000030
 - 03-24 15:05:37.094: I/DEBUG(3223): d0 000000f043700000 d1 3ff0000043700000
 - 03-24 15:05:37.094: I/DEBUG(3223): d2 4d8666d6424ca6a3 d3 00540ff04a2c08c0
 - 03-24 15:05:37.094: I/DEBUG(3223): d4 3fbc71c7002b0230 d5 3fe999999999999a
 - 03-24 15:05:37.094: I/DEBUG(3223): d6 3fe8000000000000 d7 3fc000003f4ccccd
 - 03-24 15:05:37.094: I/DEBUG(3223): d8 0000000000000000 d9 0000000000000000
 - 03-24 15:05:37.094: I/DEBUG(3223): d10 0000000000000000 d11 0000000000000000
 - 03-24 15:05:37.094: I/DEBUG(3223): d12 0000000000000000 d13 0000000000000000
 - 03-24 15:05:37.094: I/DEBUG(3223): d14 0000000000000000 d15 0000000000000000
 - 03-24 15:05:37.094: I/DEBUG(3223): scr 60000012
 - 03-24 15:05:37.143: W/ActivityManager(1634): Activity pause timeout for HistoryRecord{4064de78 com.motorola.blur.home/.HomeActivity}
 - 03-24 15:05:37.495: I/DEBUG(3223): #00 pc 00013fd4 /system/lib/libc.so
 - 03-24 15:05:37.495: I/DEBUG(3223): #01 pc 0001478a /system/lib/libc.so
 - 03-24 15:05:37.495: I/DEBUG(3223): #02 pc 00002a28 /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
 - 03-24 15:05:37.495: I/DEBUG(3223): #03 pc 00001f08 /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
 - 03-24 15:05:37.495: I/DEBUG(3223): #04 pc 00002824 /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
 - 03-24 15:05:37.495: I/DEBUG(3223): #05 pc 00001180 /data/data/com.lrc.tingjue/lib/libtingjue.so
 - 03-24 15:05:37.495: I/DEBUG(3223): #06 pc 00011e74 /system/lib/libdvm.so
 - 03-24 15:05:37.495: I/DEBUG(3223): #07 pc 000435ec /system/lib/libdvm.so
 - 03-24 15:05:37.495: I/DEBUG(3223): #08 pc 00017088 /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #09 pc 0001c210 /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #10 pc 0001b0f8 /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #11 pc 00059dae /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #12 pc 00061a76 /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #13 pc 00017088 /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #14 pc 0001c210 /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #15 pc 0001b0f8 /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #16 pc 00059c0c /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #17 pc 00059e24 /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #18 pc 0004e186 /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #19 pc 00011b94 /system/lib/libc.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #20 pc 0001173c /system/lib/libc.so
 - 03-24 15:05:37.503: I/DEBUG(3223): code around pc:
 - 03-24 15:05:37.503: I/DEBUG(3223): afd13fb4 681f447b f102fa37 d01d0788 0101f001
 - 03-24 15:05:37.503: I/DEBUG(3223): afd13fc4 0c24f103 0001f081 eb0c1881 688400c1
 - 03-24 15:05:37.503: I/DEBUG(3223): afd13fd4 68d568a2 d17d42a5 d1064290 fa102001
 - 03-24 15:05:37.503: I/DEBUG(3223): afd13fe4 ea27f201 601f0702 691be004 d371429a
 - 03-24 15:05:37.503: I/DEBUG(3223): afd13ff4 60d06082 e0a500c9 42ac689d 808ef240
 - 03-24 15:05:37.503: I/DEBUG(3223): code around lr:
 - 03-24 15:05:37.503: I/DEBUG(3223): afd110e8 e2166903 1a000018 e5945000 e1a02004
 - 03-24 15:05:37.503: I/DEBUG(3223): afd110f8 e2055a02 e1a00005 e3851001 ebffed92
 - 03-24 15:05:37.503: I/DEBUG(3223): afd11108 e3500000 13856002 1a000001 ea000009
 - 03-24 15:05:37.503: I/DEBUG(3223): afd11118 ebfffe50 e1a01004 e1a00006 ebffed92
 - 03-24 15:05:37.503: I/DEBUG(3223): afd11128 e1a01005 e1550000 e1a02006 e3a03000
 - 03-24 15:05:37.503: I/DEBUG(3223): stack:
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387a0 45638f01
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387a4 002c1f80
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387a8 fffffe8c
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387ac 405442a8
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387b0 00000018
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387b4 aca4ef45 /system/lib/libdvm.so
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387b8 405442a8
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387bc 00000000
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387c0 00000004
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387c4 afd464b0
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387c8 000b2808
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387cc 000b2808
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387d0 45738858
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387d4 4557ed78
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387d8 df002777
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387dc e3a070ad
 - 03-24 15:05:37.503: I/DEBUG(3223): #00 457387e0 81304190 /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387e4 000b2820
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387e8 000b2808
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387ec 000b2808
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387f0 45738858
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387f4 afd1478d /system/lib/libc.so
 - 03-24 15:05:37.503: I/DEBUG(3223): #01 457387f8 81304190 /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
 - 03-24 15:05:37.503: I/DEBUG(3223): 457387fc 81302a2c /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
 - 03-24 15:05:37.773: I/System.out(2725): Receive:android.intent.action.PACKAGE_ADDED
 - 03-24 15:05:37.773: I/System.out(2725): DataString:package:com.lrc.tingjue
 - 03-24 15:05:38.136: I/WindowManager(1634): adjustConfigurationLw fontScale=1.0
 
都是一些寄存器以及函数地址,真不知道怎么找具体哪个函数出错了,后来网上看到ndk-stack这个工具,很快就定位到错误了
ndk-stack需要log作为输入来分析
adb logcat | $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi 
也可以把log直接拿出来,再用ndk-stack分析 
adb logcat > /tmp/foo.txt 
$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump foo.txt
用ndk-stack分析应用native程序异常crash掉的更多相关文章
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
		
调试技巧 —— 如何利用windbg + dump + map分析程序异常 逗比汪星人2011-09-04上传 调试技巧 —— 如何利用windbg + dump + map分析程序异常 http ...
 - Android Native 程序逆向入门(一)—— Native 程序的启动流程
		
八月的太阳晒得黄黄的,谁说这世界不是黄金?小雀儿在树荫里打盹,孩子们在草地里打滚.八月的太阳晒得黄黄的,谁说这世界不是黄金?金黄的树林,金黄的草地,小雀们合奏着欢畅的清音:金黄的茅舍,金黄的麦屯,金黄 ...
 - 通过字节码分析this关键字以及异常表的重要作用
		
在之前的字节码分析中缺少对异常的介绍,这次主要来对字节码异常表相关的东东进行一个学习,下面先来编写一个相关异常的小程序: 接着编译来看用javap -verbose来查看一下它的字节码信息: xion ...
 - 在 NetBeans IDE 6.0 中分析 Java 应用程序性能
		
NetBeans IDE 6.0 包含一个强大的性能分析工具,可提供与应用程序运行时行为有关的重要信息.通过 NetBeans 性能分析工具,我们可以方便地在 IDE 中监控应用程序的线程状态.CPU ...
 - 教你50招提升ASP.NET性能(三):使用Microsoft的PDBs调试和分析外部的程序集和库
		
(3)Use Microsoft’s PDBs to debug or profile external assemblies or libraries 招数3: 使用Microsoft的PDBs调试 ...
 - ubuntu下整合eclipse和javah生成jni头文件开发android的native程序
		
0:前言: 这两天一直在研究用android的jni调用第三方库,上网搜方法,但是都是泛泛而谈,没有demo,经过我几番折磨,写了n多的helloword工程,总是不成功,工程名字也就由helloow ...
 - 在程序异常中记录堆栈信息(使用ExWatcher)
		
在我们编写程序的时候可通过IDE自带的调试环境捕捉到异常(Except)错误,并能查看到相关的信息以便我们修正程序中的问题.但当软件被发布出去后,因为所部署运行的环境与我们的调试环境有很大区别,即使在 ...
 - C# 程序异常关闭时的捕获
		
本文主要以一个简单的小例子,描述C# Winform程序异常关闭时,如何进行捕获,并记录日志. 概述 有时在界面的事件中,明明有try... catch 进行捕获异常,但是还是会有异常关闭的情况,所以 ...
 - android 调试 native 程序的方法
		
一.背景 首先说需求,这个需求非常常见,就是android上需要的一个功能,linux已经有开源代码而且非常稳定,希望能直接porting过去使用,这个程序是pure c 的代码,也就是说,跟andr ...
 
随机推荐
- Windows Server 2003 R2标准版 SP2 64位 (简体中文)官方原版ISO镜像
			
Windows Server 2003 R2标准版 SP2 64位 (简体中文)官方原版ISO镜像迅雷下载 软件简介 Windows Server 2003 R2标准版是继Windows Serv ...
 - OCM_第十二天课程:Section6 —》数据库性能调优_ 资源管理器/执行计划
			
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
 - java 文件读取的一些方法
			
web项目读取日志文件 //得到路径 String appPath = filterConfig.getServletContext().getRealPath("/"); // ...
 - python----面向对象(2)
			
反射 class ClassA: name = 'xiaoming' def __init__(self): self.y = 'y' #先执行 __setattr__ 在执行__getattribu ...
 - 算法-----python实现
			
斐波那契数列 def f(n): if n == 1: return 1 elif n == 2: return 1 else: return f(n-1)+f(n-2) print(f(8)) 用普 ...
 - MVC4 下DropDownList使用方法(转)
			
与MVC3相比,差别很大: 表现形式一: public ActionResult Main() { List<SelectListItem> items = new List<Sel ...
 - poj 3461  (模式串T在主串S中出现的次数)
			
求模式串在主串中出现的次数Sample Input 3BAPCBAPCAZAAZAZAZAVERDIAVERDXIVYERDIANSample Output 130 #include <iost ...
 - poj 2031 给出每个结点的3维坐标 以及结点的半径 (MST)
			
3维空间中有N个圆球,给出x y z 以及圆球的半径 ,求最小生成树 边的权值为两个圆球间的距离 如果圆球相互接触 则权值为0 求最小的权值和 Sample Input 3 //n10.000 10. ...
 - hdu 1181 以b开头m结尾的咒语 (DFS)
			
咒语是以a开头b结尾的一个单词,那么它的作用就恰好是使A物体变成B物体现在要将一个B(ball)变成一个M(Mouse),比如 "big-got-them". Sample Inp ...
 - 点分治 poj1741
			
题意: 给出一颗树,询问有多少对点对距离<=k 链接: http://poj.org/problem?id=1741 题解: 点分治的模板题 点分治即采用分治思想分而治之 考虑一颗子树内距离&l ...