android的crash log

   在android下,如果我們寫jni程序,可能經常會出現類似下面的crash log:

10-11 20:47:24.527: INFO/DEBUG(61): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
10-11 20:47:24.527: INFO/DEBUG(61): Build fingerprint: 'rockchip/rk29sdk/rk29sdk:2.3.1/GINGERBREAD/eng.root.20110711.153921:eng/test-keys'
10-11 20:47:24.527: INFO/DEBUG(61): pid: 669, tid: 681  >>> com.xxx.Camera <<<
10-11 20:47:24.527: INFO/DEBUG(61): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000c
10-11 20:47:24.527: INFO/DEBUG(61):  r0 00000000  r1 45a7d95c  r2 00000001  r3 00002328
10-11 20:47:24.527: INFO/DEBUG(61):  r4 00000000  r5 00002328  r6 00002328  r7 00000000
10-11 20:47:24.527: INFO/DEBUG(61):  r8 45a7db30  r9 45a7d95c  10 45043fac  fp 81fa5368
10-11 20:47:24.527: INFO/DEBUG(61):  ip 8320a1e4  sp 45a7d928  lr afd1921b  pc afd18f60  cpsr 20000030
10-11 20:47:24.527: INFO/DEBUG(61):  d0  67706a2e34343237  d1  3333383133317473
10-11 20:47:24.527: INFO/DEBUG(61):  d2  0000000000000069  d3  000000000000006c
10-11 20:47:24.527: INFO/DEBUG(61):  d4  9fd151719e4be940  d5  66a628fea8a196ce
10-11 20:47:24.527: INFO/DEBUG(61):  d6  eb3850c7184a1f94  d7  00000000000000a7
10-11 20:47:24.527: INFO/DEBUG(61):  d8  0000000000000000  d9  0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d10 0000000000000000  d11 0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d12 0000000000000000  d13 0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d14 0000000000000000  d15 0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d16 4051bdc000000027  d17 bff0000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d18 3ff0000000000000  d19 0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d20 0000000000000000  d21 0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d22 3ff0000000000000  d23 0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d24 3ff0000000000000  d25 0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d26 0000000000000000  d27 0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d28 0000000000000000  d29 0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  d30 0000000000000000  d31 0000000000000000
10-11 20:47:24.527: INFO/DEBUG(61):  scr 20000012
10-11 20:47:24.577: INFO/DEBUG(61):          #00  pc 00018f60  /system/lib/libc.so
10-11 20:47:24.577: INFO/DEBUG(61):          #01  pc 00019216  /system/lib/libc.so
10-11 20:47:24.577: INFO/DEBUG(61):          #02  pc 000029fe  /system/lib/libxxxCamera.so
10-11 20:47:24.577: INFO/DEBUG(61):          #03  pc 00002bd4  /system/lib/libxxxCamera.so
10-11 20:47:24.577: INFO/DEBUG(61):          #04  pc 00002f72  /system/lib/libxxxCamera.so
10-11 20:47:24.577: INFO/DEBUG(61):          #05  pc 00002fd6  /system/lib/libxxxCamera.so
10-11 20:47:24.577: INFO/DEBUG(61):          #06  pc 00003018  /system/lib/libxxxCamera.so
10-11 20:47:24.577: INFO/DEBUG(61):          #07  pc 00017df4  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #08  pc 000495c4  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #09  pc 00042178  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #10  pc 0004ed9a  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #11  pc 0001cff4  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #12  pc 000220a4  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #13  pc 00020f9c  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #14  pc 0005fafc  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #15  pc 0005fd10  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #16  pc 000540e2  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #17  pc 000118e4  /system/lib/libc.so
10-11 20:47:24.577: INFO/DEBUG(61):          #18  pc 000114b0  /system/lib/libc.so
10-11 20:47:24.577: INFO/DEBUG(61): code around pc:
10-11 20:47:24.577: INFO/DEBUG(61): afd18f40 624561c4 f8c062c6 62018028 81f0e8bd 
10-11 20:47:24.577: INFO/DEBUG(61): afd18f50 e92d688b 46044ff7 2b004689 8128f000 
10-11 20:47:24.577: INFO/DEBUG(61): afd18f60 07028980 6921d501 4620b941 fc54f003 
10-11 20:47:24.577: INFO/DEBUG(61): afd18f70 f7f8b120 2209ff87 e1166002 7000f8d9 
10-11 20:47:24.577: INFO/DEBUG(61): afd18f80 683e89a3 3708687d 0a02f013 e017d103 
10-11 20:47:24.577: INFO/DEBUG(61): code around lr:
10-11 20:47:24.577: INFO/DEBUG(61): afd191f8 b086b570 f602fb01 9004460c a804a901 
10-11 20:47:24.577: INFO/DEBUG(61): afd19208 46189001 22014615 96059202 f7ff9603 
10-11 20:47:24.577: INFO/DEBUG(61): afd19218 b128fe9b 1a709903 f7f34621 4605eeee 
10-11 20:47:24.577: INFO/DEBUG(61): afd19228 b0064628 bf00bd70 46036841 1e4ab510 
10-11 20:47:24.577: INFO/DEBUG(61): afd19238 60422a00 6802bfa2 0b01f812 da02601a 
10-11 20:47:24.577: INFO/DEBUG(61): stack:
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d8e8  00000000  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d8ec  00000000  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d8f0  00000000  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d8f4  00000000  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d8f8  ffffdee8  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d8fc  45a7d9a4  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d900  ffffdefc  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d904  45a7db30  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d908  45043fc4  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d90c  45043fac  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d910  81fa5368  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d914  afd19b4b  /system/lib/libc.so
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d918  00000000  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d91c  45a7d9bd  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d920  00000000  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d924  7fffffe6  
10-11 20:47:24.577: INFO/DEBUG(61): #00 45a7d928  00000000  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d92c  45a7d95c  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d930  00000001  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d934  00000001  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d938  00002328  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d93c  00002328  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d940  00000000  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d944  45a7db30  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d948  45043fc4  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d94c  45043fac  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d950  81fa5368  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d954  afd1921b  /system/lib/libc.so
10-11 20:47:24.577: INFO/DEBUG(61): #01 45a7d958  afd46784  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d95c  45a7d968  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d960  00000001  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d964  00002328  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d968  0020d530  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d96c  00002328  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d970  00000000  
10-11 20:47:24.577: INFO/DEBUG(61):     45a7d974  00002328  
10-11 20:47:24.597: INFO/DEBUG(61):     45a7d978  0020d530  
10-11 20:47:24.597: INFO/DEBUG(61):     45a7d97c  83202a03  /system/lib/libxxxCamera.so
10-11 20:47:25.317: INFO/BootReceiver(95): Copying /data/tombstones/tombstone_08 to DropBox (SYSTEM_TOMBSTONE)


我們可以使用gdb來調試,但andorid下gdb不好用,而且不太穩定。其實可以直接通過上面的crash log知道調用堆棧的。

與調用堆棧相關的是類似下面的信息:

10-11 20:47:24.577: INFO/DEBUG(61):          #00  pc 00018f60  /system/lib/libc.so
10-11 20:47:24.577: INFO/DEBUG(61):          #01  pc 00019216  /system/lib/libc.so
10-11 20:47:24.577: INFO/DEBUG(61):          #02  pc 000029fe  /system/lib/libxxxCamera.so
10-11 20:47:24.577: INFO/DEBUG(61):          #03  pc 00002bd4  /system/lib/libxxxCamera.so
10-11 20:47:24.577: INFO/DEBUG(61):          #04  pc 00002f72  /system/lib/libxxxCamera.so
10-11 20:47:24.577: INFO/DEBUG(61):          #05  pc 00002fd6  /system/lib/libxxxCamera.so
10-11 20:47:24.577: INFO/DEBUG(61):          #06  pc 00003018  /system/lib/libxxxCamera.so
10-11 20:47:24.577: INFO/DEBUG(61):          #07  pc 00017df4  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #08  pc 000495c4  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #09  pc 00042178  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #10  pc 0004ed9a  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #11  pc 0001cff4  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #12  pc 000220a4  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #13  pc 00020f9c  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #14  pc 0005fafc  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #15  pc 0005fd10  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #16  pc 000540e2  /system/lib/libdvm.so
10-11 20:47:24.577: INFO/DEBUG(61):          #17  pc 000118e4  /system/lib/libc.so
10-11 20:47:24.577: INFO/DEBUG(61):          #18  pc 000114b0  /system/lib/libc.so

通過類似下面的命令就可以知道對應堆棧的源碼信息了:

/home/xufan/android/android-1.5/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-addr2line -e /home/xufan/android/android-1.5/out/target/product/generic/symbols/system/lib/libxxxCamera.so 

000029fe  

紅色部分需要按照crash log做修改。/home/xufan/android/android-1.5/爲androoid代碼的位置。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章