您的位置:首页 > 移动开发 > Android开发

Android native crash log分析

2013-03-22 11:55 537 查看
http://pjq.me/wiki/doku.php?id=android:android-jni:android-ndk-stacktrace-analyzer

Android native crash log分析

找到两种方法一种是使用google 的stack工具,一种是使用Analyze android-ndk stack trace.

参考:
http://code.google.com/p/android-ndk-stacktrace-analyzer/wiki/Usage http://source.android.com/porting/debugging_native.html
stack下载:
http://bootloader.wdfiles.com/local--files/linux%3Aandroid%3Acrashlog/stack
android-ndk-stacktrace-analyzer用法

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

python parse_stack.py mylib.asm logcat.txt

举例:

D:\stack>python parse_stack.py libslpi.asm logcat.txt

0x000b7e80: pjsua_acc_unregister + 0x0068

D:\stack>ls

libslpi.asm libslpi.so logcat.txt parse_stack.py stack.py

stack用法:

python stack.py logcat.txt

说明:stack看起来是google内部使用的工具,在windows上跑不起来,需要在Linux环境下,还有使用的时候会提示so文件的位置不存在,按照它的要求,建立相应的目录,并放入so文件就可以了。举例:

root@impjq:~/stack# python stack.py logcat.txt

make: build/core/envsetup.mk: No such file or directory

make: *** No rule to make target `build/core/envsetup.mk'.

Searching for native crashes in logcat.txt

Reading symbols from

pid: 4538, tid: 4553 >>> com.arcsoft.ddtui <<<

signal 11 (SIGSEGV), fault addr deadbaad

r0 00000000 r1 afd14679 r2 00000027 r3 00000070

r4 afd42328 r5 00000000 r6 00000000 r7 00000cb0

r8 80fac890 r9 485d8d8c 10 485d8ce4 fp 0000033c

ip 00001770 sp 485d8880 lr deadbaad pc afd11cd0

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

arm-eabi-addr2line: '/system/lib/libc.so': No such file

Stack Trace:

ADDR FUNCTION FILE:LINE

00011cd0 (unknown) (unknown)

00018fac (unknown) (unknown)

000b7e80 pjsua_acc_unregister ??:0

Stack Data:

ADDR VALUE FILE:LINE/FUNCTION

485d8840 00000340

485d8844 afd146a9 (unknown)

(unknown)

485d8848 afd42498 (unknown)

(unknown)

485d884c afd43bb4 (unknown)

(unknown)

485d8850 00000000

485d8854 afd156c3 (unknown)

(unknown)

485d8858 afd14679 (unknown)

(unknown)

485d885c afd14679 (unknown)

(unknown)

485d8860 00000070

485d8864 afd42328 (unknown)

(unknown)

485d8868 00000000

485d886c 485d8894

485d8870 00000cb0

485d8874 afd1491b (unknown)

(unknown)

485d8878 df002777

485d887c e3a070ad

485d8880 485d8df4

485d8884 80fad540

485d8888 00000cb0

485d888c afd14c81 (unknown)

(unknown)

485d8890 afd4254c (unknown)

(unknown)

485d8894 fffffbdf

485d8898 00000002

485d889c 485d8df4

485d88a0 80fad540

485d88a4 afd18fb1 (unknown)

(unknown)

485d88a8 00000946

485d88ac 00000946

485d88b0 80f5b018 ??:0

??

485d88b4 80eb7e84 ??:0

pjsua_acc_unregister

指定路径:

root@impjq:~/stack# python stack.py --symbols-dir=. logcat.txt

这样会提示某些lib不存在

root@impjq:~/stack# python stack.py --symbols-dir=. logcat.txt

make: build/core/envsetup.mk: No such file or directory

make: *** No rule to make target `build/core/envsetup.mk'. Stop.

Searching for native crashes in logcat.txt

Reading symbols from .

pid: 4538, tid: 4553 >>> com.arcsoft.ddtui <<<

signal 11 (SIGSEGV), fault addr deadbaad

r0 00000000 r1 afd14679 r2 00000027 r3 00000070

r4 afd42328 r5 00000000 r6 00000000 r7 00000cb0

r8 80fac890 r9 485d8d8c 10 485d8ce4 fp 0000033c

ip 00001770 sp 485d8880 lr deadbaad pc afd11cd0

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './data/data/com.arcsoft.ddtui/lib/libslpi.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './system/lib/libc.so': No such file

arm-eabi-addr2line: './data/data/com.arcsoft.ddtui/lib/libslpi.so': No such file

arm-eabi-addr2line: './data/data/com.arcsoft.ddtui/lib/libslpi.so': No such file

按照它的提示,建立相应的目录就可以了,其中libc.so我是直接从ndk里拷贝过来的,这样正常的运行结果如下:

root@impjq:~/stack# python stack.py --symbols-dir=. logcat.txt

make: build/core/envsetup.mk: No such file or directory

make: *** No rule to make target `build/core/envsetup.mk'. Stop.

Searching for native crashes in logcat.txt

Reading symbols from .

pid: 4538, tid: 4553 >>> com.arcsoft.ddtui <<<

signal 11 (SIGSEGV), fault addr deadbaad

r0 00000000 r1 afd14679 r2 00000027 r3 00000070

r4 afd42328 r5 00000000 r6 00000000 r7 00000cb0

r8 80fac890 r9 485d8d8c 10 485d8ce4 fp 0000033c

ip 00001770 sp 485d8880 lr deadbaad pc afd11cd0

Stack Trace:

ADDR FUNCTION FILE:LINE

00011cd0 pclose /usr/local/google/home/digit/android/main/cupc

ake/android/bionic/libc/unistd/popen.c:146

00018fac strtod /opt/digit/android/main/cupcake/android/bionic

/libc/stdlib/strtod.c:1327

000b7e80 pjsua_acc_unregister ??:0

Stack Data:

ADDR VALUE FILE:LINE/FUNCTION

485d8840 00000340

485d8844 afd146a9 /usr/local/google/home/digit/android/main/cupcake/android/

bionic/libc/stdio/setvbuf.c:84

setvbuf

485d8848 afd42498 libgcc2.c:0

__timer_table

485d884c afd43bb4 libgcc2.c:0

__timer_table

485d8850 00000000

485d8854 afd156c3 /usr/local/google/home/digit/android/main/cupcake/android/

bionic/libc/stdio/vfprintf.c:396

vfprintf

485d8858 afd14679 /usr/local/google/home/digit/android/main/cupcake/android/

bionic/libc/stdio/setvbuf.c:67

setvbuf

485d885c afd14679 /usr/local/google/home/digit/android/main/cupcake/android/

bionic/libc/stdio/setvbuf.c:67

setvbuf

485d8860 00000070

485d8864 afd42328 libgcc2.c:0

__timer_table

485d8868 00000000

485d886c 485d8894

485d8870 00000cb0

485d8874 afd1491b /usr/local/google/home/digit/android/main/cupcake/android/

bionic/libc/stdio/tempnam.c:50

tempnam

485d8878 df002777

485d887c e3a070ad

485d8880 485d8df4

485d8884 80fad540

485d8888 00000cb0

485d888c afd14c81 /usr/local/google/home/digit/android/main/cupcake/android/

bionic/libc/stdio/ungetc.c:139

ungetc

485d8890 afd4254c libgcc2.c:0

__timer_table

485d8894 fffffbdf

485d8898 00000002

485d889c 485d8df4

485d88a0 80fad540

485d88a4 afd18fb1 /opt/digit/android/main/cupcake/android/bionic/libc/stdlib

/strtod.c:1327

strtod

485d88a8 00000946

485d88ac 00000946

485d88b0 80f5b018 ??:0

??

485d88b4 80eb7e84 ??:0

pjsua_acc_unregister
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: