用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做解码器,过程中出现一个问题,执行的时候出现下面这个问题:

Java代码  

  1. 03-24 15:05:37.094: I/DEBUG(3223): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
  2. 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‘
  3. 03-24 15:05:37.094: I/DEBUG(3223): pid: 3214, tid: 3222  >>> com.lrc.tingjue <<<
  4. 03-24 15:05:37.094: I/DEBUG(3223): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000008
  5. 03-24 15:05:37.094: I/DEBUG(3223):  r0 afd464e4  r1 00000002  r2 00000002  r3 afd464b0
  6. 03-24 15:05:37.094: I/DEBUG(3223):  r4 00000000  r5 afd464b0  r6 000b2808  r7 00000004
  7. 03-24 15:05:37.094: I/DEBUG(3223):  r8 45738858  r9 4557ed78  10 002c1ea0  fp 00000000
  8. 03-24 15:05:37.094: I/DEBUG(3223):  ip afd464d4  sp 457387e0  lr afd11108  pc afd13fd4  cpsr 00000030
  9. 03-24 15:05:37.094: I/DEBUG(3223):  d0  000000f043700000  d1  3ff0000043700000
  10. 03-24 15:05:37.094: I/DEBUG(3223):  d2  4d8666d6424ca6a3  d3  00540ff04a2c08c0
  11. 03-24 15:05:37.094: I/DEBUG(3223):  d4  3fbc71c7002b0230  d5  3fe999999999999a
  12. 03-24 15:05:37.094: I/DEBUG(3223):  d6  3fe8000000000000  d7  3fc000003f4ccccd
  13. 03-24 15:05:37.094: I/DEBUG(3223):  d8  0000000000000000  d9  0000000000000000
  14. 03-24 15:05:37.094: I/DEBUG(3223):  d10 0000000000000000  d11 0000000000000000
  15. 03-24 15:05:37.094: I/DEBUG(3223):  d12 0000000000000000  d13 0000000000000000
  16. 03-24 15:05:37.094: I/DEBUG(3223):  d14 0000000000000000  d15 0000000000000000
  17. 03-24 15:05:37.094: I/DEBUG(3223):  scr 60000012
  18. 03-24 15:05:37.143: W/ActivityManager(1634): Activity pause timeout for HistoryRecord{4064de78 com.motorola.blur.home/.HomeActivity}
  19. 03-24 15:05:37.495: I/DEBUG(3223):          #00  pc 00013fd4  /system/lib/libc.so
  20. 03-24 15:05:37.495: I/DEBUG(3223):          #01  pc 0001478a  /system/lib/libc.so
  21. 03-24 15:05:37.495: I/DEBUG(3223):          #02  pc 00002a28  /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
  22. 03-24 15:05:37.495: I/DEBUG(3223):          #03  pc 00001f08  /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
  23. 03-24 15:05:37.495: I/DEBUG(3223):          #04  pc 00002824  /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
  24. 03-24 15:05:37.495: I/DEBUG(3223):          #05  pc 00001180  /data/data/com.lrc.tingjue/lib/libtingjue.so
  25. 03-24 15:05:37.495: I/DEBUG(3223):          #06  pc 00011e74  /system/lib/libdvm.so
  26. 03-24 15:05:37.495: I/DEBUG(3223):          #07  pc 000435ec  /system/lib/libdvm.so
  27. 03-24 15:05:37.495: I/DEBUG(3223):          #08  pc 00017088  /system/lib/libdvm.so
  28. 03-24 15:05:37.503: I/DEBUG(3223):          #09  pc 0001c210  /system/lib/libdvm.so
  29. 03-24 15:05:37.503: I/DEBUG(3223):          #10  pc 0001b0f8  /system/lib/libdvm.so
  30. 03-24 15:05:37.503: I/DEBUG(3223):          #11  pc 00059dae  /system/lib/libdvm.so
  31. 03-24 15:05:37.503: I/DEBUG(3223):          #12  pc 00061a76  /system/lib/libdvm.so
  32. 03-24 15:05:37.503: I/DEBUG(3223):          #13  pc 00017088  /system/lib/libdvm.so
  33. 03-24 15:05:37.503: I/DEBUG(3223):          #14  pc 0001c210  /system/lib/libdvm.so
  34. 03-24 15:05:37.503: I/DEBUG(3223):          #15  pc 0001b0f8  /system/lib/libdvm.so
  35. 03-24 15:05:37.503: I/DEBUG(3223):          #16  pc 00059c0c  /system/lib/libdvm.so
  36. 03-24 15:05:37.503: I/DEBUG(3223):          #17  pc 00059e24  /system/lib/libdvm.so
  37. 03-24 15:05:37.503: I/DEBUG(3223):          #18  pc 0004e186  /system/lib/libdvm.so
  38. 03-24 15:05:37.503: I/DEBUG(3223):          #19  pc 00011b94  /system/lib/libc.so
  39. 03-24 15:05:37.503: I/DEBUG(3223):          #20  pc 0001173c  /system/lib/libc.so
  40. 03-24 15:05:37.503: I/DEBUG(3223): code around pc:
  41. 03-24 15:05:37.503: I/DEBUG(3223): afd13fb4 681f447b f102fa37 d01d0788 0101f001
  42. 03-24 15:05:37.503: I/DEBUG(3223): afd13fc4 0c24f103 0001f081 eb0c1881 688400c1
  43. 03-24 15:05:37.503: I/DEBUG(3223): afd13fd4 68d568a2 d17d42a5 d1064290 fa102001
  44. 03-24 15:05:37.503: I/DEBUG(3223): afd13fe4 ea27f201 601f0702 691be004 d371429a
  45. 03-24 15:05:37.503: I/DEBUG(3223): afd13ff4 60d06082 e0a500c9 42ac689d 808ef240
  46. 03-24 15:05:37.503: I/DEBUG(3223): code around lr:
  47. 03-24 15:05:37.503: I/DEBUG(3223): afd110e8 e2166903 1a000018 e5945000 e1a02004
  48. 03-24 15:05:37.503: I/DEBUG(3223): afd110f8 e2055a02 e1a00005 e3851001 ebffed92
  49. 03-24 15:05:37.503: I/DEBUG(3223): afd11108 e3500000 13856002 1a000001 ea000009
  50. 03-24 15:05:37.503: I/DEBUG(3223): afd11118 ebfffe50 e1a01004 e1a00006 ebffed92
  51. 03-24 15:05:37.503: I/DEBUG(3223): afd11128 e1a01005 e1550000 e1a02006 e3a03000
  52. 03-24 15:05:37.503: I/DEBUG(3223): stack:
  53. 03-24 15:05:37.503: I/DEBUG(3223):     457387a0  45638f01
  54. 03-24 15:05:37.503: I/DEBUG(3223):     457387a4  002c1f80
  55. 03-24 15:05:37.503: I/DEBUG(3223):     457387a8  fffffe8c
  56. 03-24 15:05:37.503: I/DEBUG(3223):     457387ac  405442a8
  57. 03-24 15:05:37.503: I/DEBUG(3223):     457387b0  00000018
  58. 03-24 15:05:37.503: I/DEBUG(3223):     457387b4  aca4ef45  /system/lib/libdvm.so
  59. 03-24 15:05:37.503: I/DEBUG(3223):     457387b8  405442a8
  60. 03-24 15:05:37.503: I/DEBUG(3223):     457387bc  00000000
  61. 03-24 15:05:37.503: I/DEBUG(3223):     457387c0  00000004
  62. 03-24 15:05:37.503: I/DEBUG(3223):     457387c4  afd464b0
  63. 03-24 15:05:37.503: I/DEBUG(3223):     457387c8  000b2808
  64. 03-24 15:05:37.503: I/DEBUG(3223):     457387cc  000b2808
  65. 03-24 15:05:37.503: I/DEBUG(3223):     457387d0  45738858
  66. 03-24 15:05:37.503: I/DEBUG(3223):     457387d4  4557ed78
  67. 03-24 15:05:37.503: I/DEBUG(3223):     457387d8  df002777
  68. 03-24 15:05:37.503: I/DEBUG(3223):     457387dc  e3a070ad
  69. 03-24 15:05:37.503: I/DEBUG(3223): #00 457387e0  81304190  /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
  70. 03-24 15:05:37.503: I/DEBUG(3223):     457387e4  000b2820
  71. 03-24 15:05:37.503: I/DEBUG(3223):     457387e8  000b2808
  72. 03-24 15:05:37.503: I/DEBUG(3223):     457387ec  000b2808
  73. 03-24 15:05:37.503: I/DEBUG(3223):     457387f0  45738858
  74. 03-24 15:05:37.503: I/DEBUG(3223):     457387f4  afd1478d  /system/lib/libc.so
  75. 03-24 15:05:37.503: I/DEBUG(3223): #01 457387f8  81304190  /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
  76. 03-24 15:05:37.503: I/DEBUG(3223):     457387fc  81302a2c  /data/data/com.lrc.tingjue/lib/libSuperPlayer.so
  77. 03-24 15:05:37.773: I/System.out(2725): Receive:android.intent.action.PACKAGE_ADDED
  78. 03-24 15:05:37.773: I/System.out(2725): DataString:package:com.lrc.tingjue
  79. 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

时间: 2024-10-09 02:06:29

用ndk-stack分析应用native程序异常crash掉的相关文章

调试技巧 —— 如何利用windbg + dump + map分析程序异常

调试技巧 —— 如何利用windbg + dump + map分析程序异常 逗比汪星人2011-09-04上传 调试技巧 —— 如何利用windbg + dump + map分析程序异常 http://blog.csdn.net/wangningyu/article/details/6748138 http://download.csdn.net/detail/wangningyu/3575167

小程序异常监控及错误处理

小程序异常监控收集 web端与小程序错误监控差异 在 Web 端监测的是页面完整的 url,而小程序端监测的是路由地址: 小程序页面属于app内部的页面,使用时已全部加载完毕,因此监控页面性能时不统计页面加载时长等信息,更多的是对页面内请求.资源请求和用户行为的监控: 由于微信官方和小程序代码的要求,集成方式对比 Web 端会相对严格一些. 小程序需要监控的数据 JavaScript异常监控:不论是 Web 端还是小程序端,对 JavaScript 异常的监控都是必要的: 页面内请求监控:对于小

取证分析标准作业程序???

最近有人问我ISO 27037是什么?其实它就是有关电子证据处理的标准,但其实别被它的长篇大论给吓着了.若你有仔细看一下,它也只提到了”前段”的作业.也就是说,它提到了电子证据的搜集,保存,撷取,运送,但后面真正至为关键的分析程序,它就不提了.为何呢,因为太复杂之故. 很多单位很喜欢挂在嘴边的就是”遵循标准作业程序SOP”,听来多么专业啊~是的,乍听之下是有这么一回事.但内行人皆知,所谓SOP的主要精神及用意便是”防呆”,”防止手残”,等于为了让即便不是那么清楚为何如此执行的人,也能照表操课.但

Android Native 程序逆向入门(一)—— Native 程序的启动流程

八月的太阳晒得黄黄的,谁说这世界不是黄金?小雀儿在树荫里打盹,孩子们在草地里打滚.八月的太阳晒得黄黄的,谁说这世界不是黄金?金黄的树林,金黄的草地,小雀们合奏着欢畅的清音:金黄的茅舍,金黄的麦屯,金黄是老农们的笑声. —— 徐志摩·八月的太阳 ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 在生成 native 程序时,在链接阶段会传入一个链接脚本,在该脚本中指定了程序的入口函数. 可以看到,在默认的链接脚本 armelf_linux_eabi.x 中

程序异常监视脚本

这是应朋友要求帮助写的一个简单的程序异常监视脚本,主要通过分析日志文件中的异常信息关键词,检测到关键词则可以认为程序运行异常,重启线程. 脚本依赖linux下的crontab提供的定时器定时执行日志分析脚本. 为了帮助更轻松看懂脚本,这里简单讲解下几个高频的语句. 1.日志时间戳 TIMESTAMP TIMESTAMP=`date +%Y%m%d\ %H:%M:%S` 这里调用shell的基本方法date,按照指定的格式输出时间信息 2.输出信息到日志文件 echo -n "${TIMESTAM

在程序异常中记录堆栈信息(使用ExWatcher)

在我们编写程序的时候可通过IDE自带的调试环境捕捉到异常(Except)错误,并能查看到相关的信息以便我们修正程序中的问题.但当软件被发布出去后,因为所部署运行的环境与我们的调试环境有很大区别,即使在是调试环境中测试过非常完美的程序,也很难保证在实际运行中不出现任何错误.当程序发生错误它往往是抛出一个红叉的警告框来告诉我们它出错了,但这对我们来说却像是一个不懂表达的小孩,只是一味的告诉你它身上疼,却不懂得告诉你它哪里疼.怎么样疼.幸好有一个叫ExWatcher的组件能够教会你的小孩怎么说出它身上

用GDB远程调试android native程序

上次写了几个native程序,想着如何调试,经过一阵子搜索和测试,终于完成了.有几个关键点: 1 gdb和gdbserver 因为这两个需要配套,建议使用同一个ndk下面的gdb和gdbserver gdbserver的是在 android-ndk-r9\prebuilt\android-arm\gdbserver 这个目录下 gdb 是在 android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bi

在 NetBeans IDE 6.0 中分析 Java 应用程序性能

NetBeans IDE 6.0 包含一个强大的性能分析工具,可提供与应用程序运行时行为有关的重要信息.通过 NetBeans 性能分析工具,我们可以方便地在 IDE 中监控应用程序的线程状态.CPU 性能以及内存使用情况,而且产生的开销相对较少. 本文将概述 IDE 中包含的性能分析工具,并指导您快速开始分析 NetBeans 项目的性能.本文旨在演示 IDE 中可用的各种性能分析任务以及分析项目性能时可以获得的分析结果.但并不覆盖 IDE 中包含的所有性能分析功能,也不会深入探索如何研究性能

android 调试 native 程序的方法

一.背景 首先说需求,这个需求非常常见,就是android上需要的一个功能,linux已经有开源代码而且非常稳定,希望能直接porting过去使用,这个程序是pure c 的代码,也就是说,跟android framework, java 没关系,也跟jni没有关系,我们希望的就是能编译成一个可执行工具,push到android后能直接跑起来使用. 既然是native 代码,主要影响到的就是bionic libc, 因为android的这个基础库跟 linux 上常见的 gnu libc 有区别