`

android-ndk-stacktrace-analyzer - Analyze android-ndk stack trace

阅读更多

http://code.google.com/p/android-ndk-stacktrace-analyzer

 

Preliminary

This tool will parse two files:

  • logcat from your android device, containing a stacktrace - the stuff that looks like:
12-10 22:20:04.839 I/DEBUG   (  551): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
12-10 22:20:04.839 I/DEBUG   (  551): Build fingerprint: 'generic/sdk/generic/:1.5/CUPCAKE/150240:eng/test-keys'
12-10 22:20:04.839 I/DEBUG   (  551): pid: 1003, tid: 1003  >>> com.example <<<
12-10 22:20:04.849 I/DEBUG   (  551): signal 11 (SIGSEGV), fault addr 00000004
12-10 22:20:04.849 I/DEBUG   (  551):  r0 00000000  r1 0019ed48  r2 00000001  r3 0019eae4
12-10 22:20:04.859 I/DEBUG   (  551):  r4 0019ea9c  r5 0019ed48  r6 001935b0  r7 0000a9d0
12-10 22:20:04.859 I/DEBUG   (  551):  r8 00000001  r9 0019eae4  10 804df39c  fp 0019ea9c
12-10 22:20:04.869 I/DEBUG   (  551):  ip 00000071  sp beb6f4a8  lr 8041d8d9  pc 8041cc6c  cpsr 00000030
12-10 22:20:04.948 I/DEBUG   (  551):          #00  pc 0000e3b4  /system/lib/libdvm.so
12-10 22:20:04.948 I/DEBUG   (  551): stack:
12-10 22:20:04.948 I/DEBUG   (  551):     beb6f468  00000000
12-10 22:20:04.959 I/DEBUG   (  551):     beb6f46c  0019ede3  [heap]
12-10 22:20:04.959 I/DEBUG   (  551):     beb6f470  00000002
...

The logcat file can have more than one stack trace - in which case, all stack traces will be processed.

  • asm file of the library being debugged. You generate this file by using the NDK's objdump tool:
...android-ndk/android-ndk-1.6_r1/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin/arm-eabi-objdump -S mylib.so > mylib.asm

 

Running

Use the script by running:

python parse_stack.py <asm-file> <logcat-file>
 

 

Output

A sample output of the script would be:

0x0001d9dc:                   native_func_3 + 0x095c
0x0001d8d4:                   native_func_2 + 0x0854
0x0001cc6c:                   native_func_1 + 0x0048
0x0001b768:Java_com_example_MyClass_jniFunc + 0x0084
 

Each of these lines represents a function call (actually - a return address, which points to the instruction immediately after the function call).

In our case, Java_com_example_MyClass_jniFunc called native_func_1 which called native_func_2 , and so on.

native_func_1 called native_func_2 when it was 0x48 bytes inside the function (again - return address).

You can try to analyze exactly what happened there from looking at the assembly code - in our example, at address 0x0001cc6c.

 

分享到:
评论

相关推荐

    android-ndk(android-ndk-r26b-windows.zip)

    这个压缩包“android-ndk-r26b-windows.zip”包含了NDK的第26个版本,专为Windows操作系统设计。通过这个工具,开发者可以利用原生代码编写高性能、低级别的应用模块,比如图形处理、物理模拟或音频处理等。 在...

    android-ndk-tracktrack-analyzer .py

    值得注意的是,"android-ndk-stacktrace-analyzer-master"这一文件名表明这可能是一个项目的主分支,包含完整的源代码和资源。开发者可以下载并研究源码,根据自身需求进行定制。 总结来说,"android-ndk-track...

    android-ndk(android-ndk-r25b-linux.zip)

    这个“android-ndk-r25b-linux.zip”文件是NDK的一个特定版本,即r25b,专为Linux操作系统设计。在Android应用开发中,NDK扮演着至关重要的角色,它允许开发者使用原生代码(如C和C++)来编写部分应用,以提高性能、...

    android-ndk(android-ndk-r23b-windows.zip)

    这个"android-ndk-r23b-windows.zip"压缩包包含了NDK的第23个版本,专为Windows操作系统设计。NDK是Android应用开发中的一个重要组成部分,它允许开发者使用原生代码(如C、C++)来编写部分应用程序,从而利用底层的...

    android-ndk(android-ndk-r25b-windows.zip)

    这个压缩包“android-ndk-r25b-windows.zip”包含了NDK的第25个版本,专为Windows操作系统设计。NDK的主要功能是让开发者能够在Android应用中使用原生代码,例如C、C++,以实现高性能计算或利用硬件加速等功能。 **...

    android-ndk(android-ndk-r26b-darwin.zip)

    在本案例中,我们关注的是"android-ndk-r26b-darwin.zip",这是一个专为macOS系统设计的NDK版本。 **Android NDK的主要功能和用途** 1. **性能优化**:对于计算密集型或图形密集型的应用,如游戏和复杂的科学计算...

    android-ndk(android-ndk-r23b-linux.zip)

    这个“android-ndk-r23b-linux.zip”文件是NDK的一个特定版本,即r23b,专为Linux操作系统设计。在Android应用开发中,NDK扮演着至关重要的角色,它允许开发者使用原生代码(如C和C++)来编写部分应用,以提升性能或...

    android-ndk(android-ndk-r26b-linux.zip)

    9. **崩溃日志和调试**:NDK提供了一些工具,如ndk-stack,帮助开发者分析和调试原生代码的崩溃日志,gdb则可用于原生代码的调试。 10. **多平台兼容性**:尽管这个版本是针对Linux的,NDK也提供了Windows和macOS的...

    android-ndk(android-ndk-r25b-darwin.zip)

    `android-ndk-r25b-darwin.zip` 是针对macOS系统的NDK版本,版本号为r25b,包含了一系列用于构建、编译和调试原生代码的工具。 在Android应用开发中,NDK的主要作用和知识点包括: 1. **JNI (Java Native ...

    android-ndk-r18b-linux-x86_64.zip

    android-ndk-r18b-linux-x86_64.zip https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip

    android-ndk-r19c-linux-x86_64.zip

    echo 'export PATH=$PATH:/opt/android/ndk/android-ndk-r19c' | sudo tee -a ~/.bashrc source ~/.bashrc ``` 现在,NDK已准备就绪。接下来,我们需要安装QT 5.13。访问QT官方网站(https://www.qt.io/download)...

    android-ndk-r18b-windows-x86_64.zip

    标题中的“android-ndk-r18b-windows-x86_64.zip”表明这是一个适用于Windows 64位系统的Android NDK版本,具体为R18B更新。 在Android应用开发中,NDK的主要用途包括: 1. **性能优化**:对于计算密集型或图形...

    android-ndk-r17c-windows-x86_64.zip

    "android-ndk-r17c-windows-x86_64.zip" 是针对Windows 64位系统的Android NDK版本r17c的压缩包文件。这个版本在NDK历史中占有特殊地位,因为它标志着GCC(GNU Compiler Collection)支持的终结。 NDK的核心功能...

    android-ndk-r20b-windows-x86_64.zip

    对于64位Windows用户来说,"android-ndk-r20b-windows-x86_64.zip"是一个关键资源,它意味着可以直接在Windows环境中搭建本地开发环境,无需担心系统架构问题。解压后的文件包括了所有必要的工具和库,如编译器、...

    安卓NDK android-ndk-r12b-windows-x86_64

    可用于安卓 qt开发 安卓NDK android-ndk-r12b-windows-x86_64

    android-ndk-r20-linux-x86_64.zip

    《深入理解Android NDK:基于android-ndk-r20-linux-x86_64.zip的探讨》 Android NDK,全称为Native Development Kit,是Google为开发者提供的一套工具集合,它允许开发者使用C和C++语言进行Android应用程序的开发...

    android-ndk-r16-windows-x86_64.zip

    android-ndk-r16-windows-x86_64.zip

    Android-ndk-r10d

    由于有上传限制,不能整包上传所以上传了一个txt文档里面为Android-ndk-r10d的百度云链接及密码,之前网上找了很多都不能用,这个下载解压就可以了

    android-ndk-r10e-windows-x86_64.exe

    android-ndk-r10e-windows-x86_64.exe

    android-ndk-r16b-windows-x86_64.zip

    "android-ndk-r16b-windows-x86_64.zip" 是NDK的第16个版本,特别为Windows 64位操作系统设计。 在Android应用开发中,通常我们使用Java或Kotlin编写大部分代码,但由于这些语言运行在Dalvik或ART虚拟机上,它们的...

Global site tag (gtag.js) - Google Analytics