ndk-stack的使用

原创 2015年12月11日 22:26:55

问题及解决方法

  • jni开发过程中native崩溃log样式如下
F/libc    (12115): Fatal signal 11 (SIGSEGV) at 0x37413144 (code=1), thread 12115 (om.example.test)
I/DEBUG   (  257): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (  257): Build fingerprint: 'OPPO/R7007/R7007:4.3/JLS36C/1390465867:user/release-keys'
I/DEBUG   (  257): Revision: '0'
I/DEBUG   (  257): pid: 12115, tid: 12115, name: om.example.test  >>> com.example.test <<<
I/DEBUG   (  257): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 37413144
I/DEBUG   (  257): Abort message: ''
I/DEBUG   (  257):     r0 37413144  r1 00000000  r2 00000001  r3 8e4efac8
I/DEBUG   (  257):     r4 5d9f5f30  r5 5d9f5f88  r6 35413246  r7 4011e20c
I/DEBUG   (  257):     r8 be89a180  r9 57561c7c  sl 415e9040  fp be89a194
I/DEBUG   (  257):     ip 00000001  sp be899d20  lr 400e0ba9  pc 5d8c182e  cpsr 20000030
I/DEBUG   (  257):     d0  000000000000000f  d1  6361436c6c417261
I/DEBUG   (  257):     d2  6e69676562206568  d3  2d2d2d2d2d2d2d2d
I/DEBUG   (  257):     d4  0000000000000000  d5  0000000000000000
I/DEBUG   (  257):     d6  0000000000000000  d7  0000000080000000
I/DEBUG   (  257):     d8  0000000000000000  d9  0000000000000000
I/DEBUG   (  257):     d10 0000000000000000  d11 0000000000000000
I/DEBUG   (  257):     d12 0000000000000000  d13 0000000000000000
I/DEBUG   (  257):     d14 0000000000000000  d15 0000000000000000
  • 如何分析crash log对应的调用栈?只需2步

    1. C:\Users\zzz\Desktop>adb logcat -c && adb logcat > C:\Users\zzz\Desktop\log.txt
    2. C:\Users\zzz\Desktop>ndk-stack -sym C:\androidStudio\android-libac\jni\obj\local\armeabi -dump log.txt
  • 输出如下

********** Crash dump: **********
Build fingerprint: 'OPPO/R7007/R7007:4.3/JLS36C/1390465867:user/release-keys'
pid: 12115, tid: 12115, name: om.example.test  >>> com.example.test <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 37413144
Stack frame I/DEBUG   (  257):     #00  pc 0000682e  /data/app-lib/com.example.test-2/libacd.so: Routine MapsManager::clearAllCache() at C:\androidStudio\android-libac\jni/jni/src/pmaps/MapsManager.cpp:169 (discriminator 1)
Stack frame I/DEBUG   (  257):     #01  pc 00006d09  /data/app-lib/com.example.test-2/libacd.so: Routine MapsManager::startSecureCheck() at C:\androidStudio\android-libac\jni/jni/src/pmaps/MapsManager.cpp:98
Stack frame I/DEBUG   (  257):     #02  pc 00006e47  /data/app-lib/com.example.test-2/libacd.so: Routine assertInvader(ErrorCode*, android::UParcel*) at C:\androidStudio\android-libac\jni/jni/src/pmaps/MapsManager.cpp:21
Stack frame I/DEBUG   (  257):     #03  pc 000060d7  /data/app-lib/com.example.test-2/libacd.so: Routine nativeAssert at C:\androidStudio\android-libac\jni/jni/src/entrance.cpp:70
Stack frame I/DEBUG   (  257):     #04  pc 000203cc  /system/lib/libdvm.so (dvmPlatformInvoke+112)
Stack frame I/DEBUG   (  257):     #05  pc 00050d97  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
Stack frame I/DEBUG   (  257):     #06  pc 00029860  /system/lib/libdvm.so
Stack frame I/DEBUG   (  257):     #07  pc 0002e218  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
Stack frame I/DEBUG   (  257):     #08  pc 0000d0af  /system/lib/libdvm.so

参考

  • android-ndk-r10e/docs/Programmers_Guide/html/md_3__key__topics__debugging__n_d_k-_s_t_a_c_k.html
版权声明:本文为博主原创文章,未经博主允许不得转载。

android使用ndk-stack调试JNI部分的C/C++代码

法一:使用ndk-stack输出调用堆栈 我这里的ndk-stack位置为:/home/hwh/Android_Project/Environment/android-ndk-r8e 'ndk...
  • oldmtn
  • oldmtn
  • 2013年05月06日 11:50
  • 15432

Android NDK开发Crash错误定位

在Android开发中,程序Crash分三种情况:未捕获的异常、ANR(Application Not Responding)和闪退(NDK引发错误)。其中未捕获的异常根据logcat打印的堆栈信息很...
  • xyang81
  • xyang81
  • 2015年01月01日 19:50
  • 26426

ndk-stack的使用

这是对ndk-stack使用文档的翻译,文档所在的路径是:\android-ndk-r9d\docs\NDK-STACK.html 介绍: 这篇文档描述的是ndk-stack工具,从R6版本起...
  • c_boy_lu
  • c_boy_lu
  • 2015年11月13日 10:22
  • 753

使用 ndk-stack 寻找Android程序Crash的原因

开篇废话很久不研究cocos2d-x了,也不知道如今发展如何了。先前写游戏时会分几块。 主要功能代码都是用C++编写,编辑器用vs android平台相关功能使用 Java 编写,编辑器用 Eclip...
  • change_from_now
  • change_from_now
  • 2016年12月02日 17:02
  • 2720

分析安卓ANR tombstone使用ndk-stack addr2line

转自https://my.oschina.net/u/2424583/blog/535296 刷机过程中会碰到很多crash问题,此时安卓会在/data/tombstones目录下保存9个s...
  • zerokkqq
  • zerokkqq
  • 2017年06月15日 07:01
  • 585

ndk-stack定位不出崩溃代码行的问题

NDK开发包中自带的NDK-STACK工具可以
  • flying8127
  • flying8127
  • 2014年11月03日 17:54
  • 2599

ndk-stack 学习使用

最近在mac上编译android 版本,各种崩溃让人蛋疼,网上学习了下ndk-stack使用方法。...
  • wanzhihui0000
  • wanzhihui0000
  • 2014年04月04日 17:06
  • 15121

Android studio下使用ndk-stack定位crash

Android studio下使用ndk-stack定位crash
  • a568478312
  • a568478312
  • 2017年10月09日 14:42
  • 159

【玩转cocos2d-x之三十八】如何使用NDK-STACK tool来恢复Cocos2d-x安卓错误堆栈信息

很多童鞋在纠结在Cocos2d-x中安卓项目如何调试JNI部分的C++代码,在吃完2个茶叶蛋后我决定放大招。。。 本文翻译自:http://www.cocos2d-x.org/forums/6/to...
  • jackyvincefu
  • jackyvincefu
  • 2014年03月31日 23:38
  • 6680

android studio ndk 调试技巧

Android ndk开发,出现内存溢出或别的问题需要调试时,如何快速定位到源码位置,可以使用addr2line 和 ndk-stack 两个工具。在程序 内容主要分为一下几个部分:1.Librar...
  • CodySnow
  • CodySnow
  • 2016年06月15日 15:09
  • 3913
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ndk-stack的使用
举报原因:
原因补充:

(最多只允许输入30个字)