How to find the crash point: Android Native crash
来源:互联网 发布:java项目开发全程实录 编辑:程序博客网 时间:2024/05/22 04:39
There is a very quick way to find out which line cause the crash in logcat,
Generally, if some native service crashes, look in the crash log in logcat like this:
I/DEBUG ( 2253): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 2253): Build fingerprint: 'freescale/sabresd_6dq/sabresd_6dq:4.0.4/R13.3-rc3/eng.b18293.20120710.124535:user/test-keys'
I/DEBUG ( 2253): pid: 3043, tid: 3080 >>> /system/bin/mediaserver <<<
I/DEBUG ( 2253): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
I/DEBUG ( 2253): r0 deadbaad r1 00000001 r2 a0000000 r3 00000000
I/DEBUG ( 2253): r4 00000000 r5 00000027 r6 00bfd370 r7 40c1ef18
I/DEBUG ( 2253): r8 00004349 r9 00000000 10 000003f5 fp 00000000
I/DEBUG ( 2253): ip ffffffff sp 418876a0 lr 400ff1b5 pc 400fb91c cpsr 60000030
I/DEBUG ( 2253): ip ffffffff sp 418876a0 lr 400ff1b5 pc 400fb91c cpsr 60000030
We can see it’s possibly related to some code that we debugged, but don’t know exactly where or which line of code,
Android has a tool to convert this log to a more precise log. As a quick example, if you got this crash in logcat:
F/libc ( 3043): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1)
I/DEBUG ( 2253): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 2253): Build fingerprint: 'freescale/sabresd_6dq/sabresd_6dq:4.0.4/R13.3-rc3/eng.b18293.20120710.124535:user/test-keys'
I/DEBUG ( 2253): pid: 3043, tid: 3080 >>> /system/bin/mediaserver <<<
I/DEBUG ( 2253): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
I/DEBUG ( 2253): r0 deadbaad r1 00000001 r2 a0000000 r3 00000000
I/DEBUG ( 2253): r4 00000000 r5 00000027 r6 00bfd370 r7 40c1ef18
I/DEBUG ( 2253): r8 00004349 r9 00000000 10 000003f5 fp 00000000
I/DEBUG ( 2253): ip ffffffff sp 418876a0 lr 400ff1b5 pc 400fb91c cpsr 60000030
I/DEBUG ( 2253): d0 3e4ccccd00000000 d1 7e37e43c3e4ccccd
I/DEBUG ( 2253): d2 0000004042000000 d3 4200000000000000
I/DEBUG ( 2253): d4 3ff0000000000000 d5 3ff0000000000000
I/DEBUG ( 2253): d6 4220000041300000 d7 3e4ccccd3e4ccccd
I/DEBUG ( 2253): d8 000000000000685d d9 00000000010bee7c
I/DEBUG ( 2253): d10 0000000000000000 d11 0000000000000000
I/DEBUG ( 2253): d12 0000000000000000 d13 0000000000000000
I/DEBUG ( 2253): d14 0000000000000000 d15 0000000000000000
I/DEBUG ( 2253): d16 0000000000000000 d17 3ff0000000000000
I/DEBUG ( 2253): d18 7e37e43c8800759c d19 0000000000000000
I/DEBUG ( 2253): d20 bfe0000000000000 d21 405443dab91ed79f
I/DEBUG ( 2253): d22 0000000000000000 d23 3f40624dd2f1a9fc
I/DEBUG ( 2253): d24 7fff80007fff0000 d25 3f6328e1cb8c85e0
I/DEBUG ( 2253): d26 0000000000000000 d27 0000000000000000
I/DEBUG ( 2253): d28 0000000000000000 d29 0000000000000000
I/DEBUG ( 2253): d30 0000000000000000 d31 0000000000000000
I/DEBUG ( 2253): scr 28000010
I/DEBUG ( 2253):
I/DEBUG ( 2253): #00 pc 0001791c /system/lib/libc.so
I/DEBUG ( 2253): #01 pc 00003f3e /system/lib/libcutils.so (__android_log_assert)
I/DEBUG ( 2253): #02 pc 0006c436 /system/lib/libstagefright.so (_ZN7android8OMXCodec16drainInputBufferEPNS0_10BufferInfoE)
I/DEBUG ( 2253): #03 pc 0006cbc2 /system/lib/libstagefright.so (_ZN7android8OMXCodec17drainInputBuffersEv)
I/DEBUG ( 2253): #04 pc 0006f570 /system/lib/libstagefright.so (_ZN7android8OMXCodec4readEPPNS_11MediaBufferEPKNS_11MediaSource11ReadOpti
onsE)
I/DEBUG ( 2253): #05 pc 00051aba /system/lib/libstagefright.so (_ZN7android11AudioPlayer5startEb)
I/DEBUG ( 2253): #06 pc 0005411e /system/lib/libstagefright.so (_ZN7android13AwesomePlayer18startAudioPlayer_lEb)
I/DEBUG ( 2253): #07 pc 0005554a /system/lib/libstagefright.so (_ZN7android13AwesomePlayer6play_lEv)
I/DEBUG ( 2253): #08 pc 000558e0 /system/lib/libstagefright.so (_ZN7android13AwesomePlayer4playEv)
I/DEBUG ( 2253): #09 pc 00027f4e /system/lib/libmediaplayerservice.so (_ZN7android17StagefrightPlayer5startEv)
I/DEBUG ( 2253): #10 pc 00024dda /system/lib/libmediaplayerservice.so (_ZN7android18MediaPlayerService6decodeEixxPjPiS2_)
I/DEBUG ( 2253):
I/DEBUG ( 2253): code around pc:
I/DEBUG ( 2253): 400fb8fc 4623b15c 2c006824 e026d1fb b12368db \.#F$h.,..&..h#.
I/DEBUG ( 2253): 400fb90c 21014a17 6011447a 48124798 24002527 .J.!zD.`.G.H'%.$
I/DEBUG ( 2253): 400fb91c f7f47005 2106ee22 eebef7f5 f04fa901 .p.."..!......O.
I/DEBUG ( 2253): 400fb92c 460a5380 93032006 94029401 ea7af7f5 .S.F. ........z.
I/DEBUG ( 2253): 400fb93c 4622a905 f7f52002 f7f4ea84 2106ee0e .."F. .........!
I/DEBUG ( 2253):
I/DEBUG ( 2253): code around lr:
I/DEBUG ( 2253): 400ff194 41f0e92d 4c0c4680 447c2600 68a56824 -..A.F.L.&|D$h.h
I/DEBUG ( 2253): 400ff1a4 e0076867 300cf9b5 dd022b00 47c04628 gh.....0.+..(F.G
I/DEBUG ( 2253): 400ff1b4 35544306 37fff117 6824d5f4 d1ee2c00 .CT5...7..$h.,..
I/DEBUG ( 2253): 400ff1c4 e8bd4630 bf0081f0 00028346 41f0e92d 0F......F...-..A
I/DEBUG ( 2253): 400ff1d4 9004b086 f602fb01 460c461f 46154814 .........F.F.H.F
I/DEBUG ( 2253):
I/DEBUG ( 2253): memory map around addr deadbaad:
I/DEBUG ( 2253): becef000-bed10000 [stack]
I/DEBUG ( 2253): (no map for address)
I/DEBUG ( 2253): ffff0000-ffff1000 [vectors]
I/DEBUG ( 2253):
You can see it’s related to which lib, but don’t know which line.
So, let’s go to your source code, for example:
mydroid;
after do
$. build/envsetup.sh$ lunch sabresd_6dp-eng
$ development/scripts/stack
Then you have a prompt:
Readingnative crash info from stdin
The you just copy all the crash log in above to this prompt.
And then Key in EOF (CTRL+D) in this prompt.
You will get output like this:
Reading symbols from /home/b33651/proj/ics/out/target/product/sabresd_6dq/symbols
pid: 3043, tid: 3080 >>> /system/bin/mediaserver <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
r0 deadbaad r1 00000001 r2 a0000000 r3 00000000
r4 00000000 r5 00000027 r6 00bfd370 r7 40c1ef18
r8 00004349 r9 00000000 10 000003f5 fp 00000000
ip ffffffff sp 418876a0 lr 400ff1b5 pc 400fb91c
Stack Trace:
RELADDR FUNCTION FILE:LINE
0001791c __libc_android_abort+92 /home/b33651/proj/ics/bionic/libc/unistd/abort.c:82
00003f3e __android_log_assert+94 /home/b33651/proj/ics/system/core/liblog/logd_write.c:246
0006c436 android::OMXCodec::drainInputBuffer(android::OMXCodec::BufferInfo*)+138 /home/b33651/proj/ics/frameworks/base/media/libstagefright/OMXCodec.cpp:3181
0006cbc2 android::OMXCodec::drainInputBuffers()+102 /home/b33651/proj/ics/frameworks/base/media/libstagefright/OMXCodec.cpp:3125
0006f570 android::OMXCodec::read(android::MediaBuffer**, android::MediaSource::ReadOptionsconst*)+136 /home/b33651/proj/ics/frameworks/base/media/libstagefright/OMXCodec.cpp:4020
00051aba android::AudioPlayer::start(bool)+134 /home/b33651/proj/ics/frameworks/base/media/libstagefright/AudioPlayer.cpp:93
0005411e android::AwesomePlayer::startAudioPlayer_l(bool)+70 /home/b33651/proj/ics/frameworks/base/media/libstagefright/AwesomePlayer.cpp:953
0005554a android::AwesomePlayer::play_l()+202 /home/b33651/proj/ics/frameworks/base/media/libstagefright/AwesomePlayer.cpp:888
000558e0 android::AwesomePlayer::play()+20 /home/b33651/proj/ics/frameworks/base/media/libstagefright/AwesomePlayer.cpp:837
00027f4e android::StagefrightPlayer::start()+6 /home/b33651/proj/ics/frameworks/base/media/libmediaplayerservice/StagefrightPlayer.cpp:90
00024dda android::MediaPlayerService::decode(int,longlong,longlong, unsignedint*,int*,int*)+206 /home/b33651/proj/ics/frameworks/base/media/libmediaplayerservice/MediaPlayerService.cpp:1428
So, you get more reason logs.
Note:
- The Android directory must have built once.
- The crash log better aligns with your Android build environment.
- How to find the crash point: Android Native crash
- how to debug native crash
- how to analysis the crash dump
- How to read crash dump of Android
- How to read crash dump of Android
- How debug the android crash issue
- Android Crash之Native Crash分析
- [翻译]How to Interpret the Erlang Crash Dumps
- How to handle crash problem?(2.Finding crash information using the MAP file 2)
- Android native crash log分析
- Android native crash log分析
- Android Native Crash调试方法
- Android native crash log分析
- Android Native Crash 处理过程
- [Android]Native Crash at vdc
- Android Native Crash Capture SDK
- Android Native Crash 堆栈转换
- How to read Android crash log and stack trace
- lintcode-x的平方根-141
- ffmpeg 接收解码rtp h264视频流
- UVA301回溯法求坐火车问题的最大收益
- 贺利坚练习(3)
- vc中如何绘制直方图
- How to find the crash point: Android Native crash
- 黑马程序员-反射篇
- 深入理解WeakHashmap
- Cstyle的UEFI导读:第21.0篇 UEFI的N种实现及差别
- UGUI基本概念
- jQuery源码学习 之 ready与load事件 ---- day4
- 网络连接失败
- Porting openwrt on MT7688 Log
- import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包