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).

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. 初次学习前端必备的开发工具VS Code简单
  2. 2021.6.28
  3. 学习环境搭建及浅谈对Http协议的理解
  4. vscode的下载和安装以及常用插件的部署和
  5. 开学第一课
  6. VS code下载安装插件以及http协议
  7. 0426php第一天
  8. 网站快速排名优化_企业站优化必读
  9. 学习第二天0629
  10. 0628作业