Android 提供了ndk-stack工具:
执行命令如下,可以发现测试程序崩溃信息:
# adb logcat | ndk-stack -sym /home/testCodes/obj/local/armeabi-v7a/
[root@bogon bin]# adb logcat | ndk-stack
Usage:
ndk-stack -sym <path> [-dump <path>]
-sym Contains full path to the root directory for symbols.
-dump Contains full path to the file containing the crash dump.
This is an optional parameter. If ommited, ndk-stack will
read input data from stdin
See docs/NDK-STACK.html in your NDK installation tree for more details.
[root@bogon bin]# adb logcat | ndk-stack -sym /home/testCodes/obj/local/armeabi-v7a/
********** Crash dump: **********
Build fingerprint: 'generic/sdk/generic:4.0.2/ICS_MR0/229537:eng/test-keys'
pid: 19876, tid: 19877 >>> ./testLsLib <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
Stack frame #00 pc 000aea5c /data/data/test/libACE.so (_ZN17ACE_Timer_Queue_TIP17ACE_Event_Handler39ACE_Event_Handler_Handle_Timeout_UpcallI26ACE_Recursive_Thread_MutexES3_E6expireEv)
Stack frame #01 pc 000ad644 /data/data/test/libACE.so (_ZN20ACE_Select_Reactor_TI19ACE_Reactor_Token_TI9ACE_TokenEE23dispatch_timer_handlersERi)
Stack frame #02 pc 000ad568 /data/data/test/libACE.so (_ZN20ACE_Select_Reactor_TI19ACE_Reactor_Token_TI9ACE_TokenEE8dispatchEiR29ACE_Select_Reactor_Handle_Set)
Stack frame #03 pc 000aea2e /data/data/test/libACE.so (_ZN20ACE_Select_Reactor_TI19ACE_Reactor_Token_TI9ACE_TokenEE15handle_events_iEP14ACE_Time_Value)
Crash dump is completed
********** Crash dump: **********
Build fingerprint: 'generic/sdk/generic:4.0.2/ICS_MR0/229537:eng/test-keys'
pid: 19881, tid: 19881 >>> ./temptest <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
Stack frame #00 pc 0000e038 /system/lib/libc.so (strcpy)
Crash dump is completed
********** Crash dump: **********
Build fingerprint: 'generic/sdk/generic:4.0.2/ICS_MR0/229537:eng/test-keys'
pid: 19895, tid: 19895 >>> ./temptest <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
Stack frame #00 pc 0000e038 /system/lib/libc.so (strcpy)
Stack frame #01 pc 00008eb8 /data/data/xtest/temptest: Routine main in jni/../test/main.cpp:17
Crash dump is completed
********** Crash dump: **********
Build fingerprint: 'generic/sdk/generic:4.0.2/ICS_MR0/229537:eng/test-keys'
pid: 19909, tid: 19909 >>> ./temptest <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
Stack frame #00 pc 0000e038 /system/lib/libc.so (strcpy)
Stack frame #01 pc 00008eb8 /data/data/xtest/temptest: Routine main in jni/../test/main.cpp:17
Crash dump is completed
********** Crash dump: **********
Build fingerprint: 'generic/sdk/generic:4.0.2/ICS_MR0/229537:eng/test-keys'
pid: 19910, tid: 19910 >>> ./temptest <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
Stack frame #00 pc 0000e038 /system/lib/libc.so (strcpy)
Stack frame #01 pc 00008eb8 /data/data/xtest/temptest: Routine main in jni/../test/main.cpp:17
Crash dump is completed
********** Crash dump: **********
Build fingerprint: 'generic/sdk/generic:4.0.2/ICS_MR0/229537:eng/test-keys'
pid: 19922, tid: 19922 >>> ./temptest <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
Stack frame #00 pc 0000e038 /system/lib/libc.so (strcpy)
Stack frame #01 pc 00008eb8 /data/data/xtest/temptest (main): Routine main in jni/../test/main.cpp:17
提示17行出问题了:
可以基本定位相关问题。