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-r26b-windows.zip”包含了NDK的第26个版本,专为Windows操作系统设计。通过这个工具,开发者可以利用原生代码编写高性能、低级别的应用模块,比如图形处理、物理模拟或音频处理等。 在...
值得注意的是,"android-ndk-stacktrace-analyzer-master"这一文件名表明这可能是一个项目的主分支,包含完整的源代码和资源。开发者可以下载并研究源码,根据自身需求进行定制。 总结来说,"android-ndk-track...
这个“android-ndk-r25b-linux.zip”文件是NDK的一个特定版本,即r25b,专为Linux操作系统设计。在Android应用开发中,NDK扮演着至关重要的角色,它允许开发者使用原生代码(如C和C++)来编写部分应用,以提高性能、...
这个"android-ndk-r23b-windows.zip"压缩包包含了NDK的第23个版本,专为Windows操作系统设计。NDK是Android应用开发中的一个重要组成部分,它允许开发者使用原生代码(如C、C++)来编写部分应用程序,从而利用底层的...
这个压缩包“android-ndk-r25b-windows.zip”包含了NDK的第25个版本,专为Windows操作系统设计。NDK的主要功能是让开发者能够在Android应用中使用原生代码,例如C、C++,以实现高性能计算或利用硬件加速等功能。 **...
在本案例中,我们关注的是"android-ndk-r26b-darwin.zip",这是一个专为macOS系统设计的NDK版本。 **Android NDK的主要功能和用途** 1. **性能优化**:对于计算密集型或图形密集型的应用,如游戏和复杂的科学计算...
这个“android-ndk-r23b-linux.zip”文件是NDK的一个特定版本,即r23b,专为Linux操作系统设计。在Android应用开发中,NDK扮演着至关重要的角色,它允许开发者使用原生代码(如C和C++)来编写部分应用,以提升性能或...
9. **崩溃日志和调试**:NDK提供了一些工具,如ndk-stack,帮助开发者分析和调试原生代码的崩溃日志,gdb则可用于原生代码的调试。 10. **多平台兼容性**:尽管这个版本是针对Linux的,NDK也提供了Windows和macOS的...
android-ndk-r18b-linux-x86_64.zip https://dl.google.com/android/repository/android-ndk-r18b-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-r25b-darwin.zip` 是针对macOS系统的NDK版本,版本号为r25b,包含了一系列用于构建、编译和调试原生代码的工具。 在Android应用开发中,NDK的主要作用和知识点包括: 1. **JNI (Java Native ...
标题中的“android-ndk-r18b-windows-x86_64.zip”表明这是一个适用于Windows 64位系统的Android NDK版本,具体为R18B更新。 在Android应用开发中,NDK的主要用途包括: 1. **性能优化**:对于计算密集型或图形...
"android-ndk-r17c-windows-x86_64.zip" 是针对Windows 64位系统的Android NDK版本r17c的压缩包文件。这个版本在NDK历史中占有特殊地位,因为它标志着GCC(GNU Compiler Collection)支持的终结。 NDK的核心功能...
对于64位Windows用户来说,"android-ndk-r20b-windows-x86_64.zip"是一个关键资源,它意味着可以直接在Windows环境中搭建本地开发环境,无需担心系统架构问题。解压后的文件包括了所有必要的工具和库,如编译器、...
《深入理解Android NDK:基于android-ndk-r20-linux-x86_64.zip的探讨》 Android NDK,全称为Native Development Kit,是Google为开发者提供的一套工具集合,它允许开发者使用C和C++语言进行Android应用程序的开发...
可用于安卓 qt开发 安卓NDK android-ndk-r12b-windows-x86_64
"android-ndk-r16b-windows-x86_64.zip" 是NDK的第16个版本,特别为Windows 64位操作系统设计。 在Android应用开发中,通常我们使用Java或Kotlin编写大部分代码,但由于这些语言运行在Dalvik或ART虚拟机上,它们的...
android-ndk-r16-windows-x86_64.zip
由于有上传限制,不能整包上传所以上传了一个txt文档里面为Android-ndk-r10d的百度云链接及密码,之前网上找了很多都不能用,这个下载解压就可以了
NDK包含多个版本,如本例中的"android-ndk-r23b",代表着第23版的NDK,适用于Linux操作系统。 NDK的使用场景主要包括以下几点: 1. **性能优化**:对于CPU密集型任务,如图形渲染、物理模拟或者加密算法,使用C++...