Android ndk-stack tool
----------------------
Introduction:
-------------
This document describes the 'ndk-stack' tool that is distributed with
the Android NDK, since release r6.
Overview:
---------
'ndk-stack' is a simple tool that allows you to filter stack traces as they
appear in the output of 'adb logcat' and replace any address inside a shared
library with the corresponding <source-file>
:
<line-number>
values.
In a nutshell, it will translate something like:
I/DEBUG ( 31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 31): Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
I/DEBUG ( 31): pid: 351, tid: 351 %gt;%gt;%gt; /data/local/ndk-tests/crasher <<<
I/DEBUG ( 31): signal 11 (SIGSEGV), fault addr 0d9f00d8
I/DEBUG ( 31): r0 0000af88 r1 0000a008 r2 baadf00d r3 0d9f00d8
I/DEBUG ( 31): r4 00000004 r5 0000a008 r6 0000af88 r7 00013c44
I/DEBUG ( 31): r8 00000000 r9 00000000 10 00000000 fp 00000000
I/DEBUG ( 31): ip 0000959c sp be956cc8 lr 00008403 pc 0000841e cpsr 60000030
I/DEBUG ( 31): #00 pc 0000841e /data/local/ndk-tests/crasher
I/DEBUG ( 31): #01 pc 000083fe /data/local/ndk-tests/crasher
I/DEBUG ( 31): #02 pc 000083f6 /data/local/ndk-tests/crasher
I/DEBUG ( 31): #03 pc 000191ac /system/lib/libc.so
I/DEBUG ( 31): #04 pc 000083ea /data/local/ndk-tests/crasher
I/DEBUG ( 31): #05 pc 00008458 /data/local/ndk-tests/crasher
I/DEBUG ( 31): #06 pc 0000d362 /system/lib/libc.so
I/DEBUG ( 31):
Into the more readable output:
********** Crash dump: **********
Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
pid: 351, tid: 351 >>> /data/local/ndk-tests/crasher <<<
signal 11 (SIGSEGV), fault addr 0d9f00d8
Stack frame #00 pc 0000841e /data/local/ndk-tests/crasher : Routine zoo in /tmp/foo/crasher/jni/zoo.c:13
Stack frame #01 pc 000083fe /data/local/ndk-tests/crasher : Routine bar in /tmp/foo/crasher/jni/bar.c:5
Stack frame #02 pc 000083f6 /data/local/ndk-tests/crasher : Routine my_comparison in /tmp/foo/crasher/jni/foo.c:9
Stack frame #03 pc 000191ac /system/lib/libc.so
Stack frame #04 pc 000083ea /data/local/ndk-tests/crasher : Routine foo in /tmp/foo/crasher/jni/foo.c:14
Stack frame #05 pc 00008458 /data/local/ndk-tests/crasher : Routine main in /tmp/foo/crasher/jni/main.c:19
Stack frame #06 pc 0000d362 /system/lib/libc.so
Usage:
------
To do this, you will first need a directory containing symbolic versions of your
application's shared libraries. If you use the NDK build system (i.e. ndk-build),
then these are always located under $PROJECT_PATH/obj/local/<ab>, where
<ab> stands for your device's ABI (i.e. 'armeabi' by default).
You can feed the logcat text either as direct input to the program, e.g.:
adb logcat | $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi
Or you can use the -dump option to specify the logcat as an input file, e.g.:
adb logcat > /tmp/foo.txt
$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump foo.txt
** IMPORTANT **:
The tool looks for the initial line containing starts in the logcat output,
i.e. something that looks like:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
When copy/pasting traces, don't forget this line from the traces, or
ndk-stack won't work correctly.
TODO:
-----
A future version of 'ndk-stack' will try to launch 'adb logcat' and select the
library path automatically. For now, you'll have to do these steps manually.
As of now, ndk-stack doesn't handle libraries that don't have debug information
in them. It may be useful to try to detect the nearest function entry point to
a given PC address (e.g. as in the libc.so example above).
相关推荐
使用cocos2d-x,jni,和android ndk,开发调试无从着手是吧,那就来使用ndk-stack吧,让你轻松自如的在eclipse下,android下调试c/c++吧。嘻嘻。好东西要分享哦。
ndk-stack调试.so库
android-ndk-tracktrack-analyzer .py
一个用于分析Android本地代码crash的工具 出现crash以后,用logcat -s DEBUG把crash的log打印保存下来,例如crash_log.txt; 然后执行 ndk-stack -sym 符号所在的目录 -dump crash_log.txt; 例如ndk-stack -sym out/...
Z-STACK实验讲解分析 Z-STACK SensorDemo 实验
CC2530NDK实验1——Z-STACK SensorDemo实验
NDCrash NDCrash是用于Android NDK应用程序的功能强大的崩溃报告库。 作者的灵感来自PLCrashReporter和Google Breakpad。 请注意,该库是新库,处于实验状态。 NDCrash的关键NDCrash是用于Android NDK应用程序的功能...
参考 http://blog.csdn.net/koffuxu/article/details/37959071
Bugsnag错误监控和Android异常报告器 获取全面的以快速调试错误。 Bugsnag的库可自动检测Android应用程序中... 有关如何构建,测试和发布bugsnag-android ,请参见我们的。 执照 Bugsnag Android通知程序是根据MIT许
A demo of how you can process photos leveraging the ndk. Blur The Stack Blur Algorithm by Mario Klingemann is used to perform blur operations. License Apache License, Version 2.0 ...
TI实时操作系统相关官方文档,包含TIRTOS、SYSBIOS、NDK等
自己写的查找Dump adroid crash堆栈函数的源代码 ...cd C:\androidNDK\build\prebuilt\windows\arm-eabi-4.2.1\bin arm-eabi-objdump -d XXX.so >lib.txt 把crash 代码放入input.txt 运行sofind 生成output.txt
Android, the next-generation open mobile platform from Google and the Open Handset Alliance, is poised to become a significant player in the mobile device market. The Android platform gives developers...
Crash Reporting Using ACRA In-App Diagnostics Anti-Patterns Widget Catalog: AdapterViewFlipper Widget Catalog: CalendarView Widget Catalog: DatePicker Widget Catalog: ExpandableListView Widget Catalog...
Virtual Protocol Interconnect (VPI): Running Ethernet...NDK with SMB-Direct NDv1 and v2 API support in user space Support Teaming and High-Availability Support a variety of Windows Server and Client OS )