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
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

使用ndk-stack追踪程序崩溃

http://mogoweb.net/categories/android-ndk 2011年9月1日alex3 条评论 程序崩溃无疑是程序员最头疼的事情,而and...

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

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

Android ndk-stack tool使用

一、使用Android ndk-stack tool   1、cygwin下:   1)、adb logcat -v threadtime 先使用此命令设置logcat,具体含义,待查。   2)、然...

ndk-stack的使用

ndk-stack官方资料ndk-stackAndroid NDK提供了一个用于”翻译”Crash堆栈信息所对应的具体源文件和行号的工具–ndk-stack。它是一个二进制程序,位于NDK根目录下。“...

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

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

使用arm-eabi-addr2line, ndk-stack工具跟踪Android调用堆栈

使用arm-eabi-addr2line工具跟踪Android调用堆栈 作者:liangshengyang 转自:http://www.linuxidc.com/Linux/2011-01/318...

使用arm-eabi-addr2line, ndk-stack工具跟踪Android调用堆栈

使用arm-eabi-addr2line工具跟踪Android调用堆栈 作者:liangshengyang 转自:http://www.linuxidc.com/Linux/2011-01/318...

NDK 异常堆栈 查看工具 ndk-stack 的使用

from:http://blog.sina.com.cn/s/blog_6113a8e50102uxjo.html?sudaref=www.baidu.com 确实可用: 在adt目录下的\sdk...

android ndk-stack调试

android native开发偶尔会遭遇native库异常导致程序崩溃,打入来的log如下: 06-05 18:52:57.566: I/DEBUG(8139): *** *** *** **...

ndk-stack

程序崩溃无疑是程序员最头疼的事情,而android native程序崩溃简直是令程序员崩溃。Android java程序在异常之前还打印出代码调用栈,让程序员有迹可寻,结合单步调试,定位问题相对容易些...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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