Android Debuggerd的分析及使用方法
Android系统自带一个实用的程序异常退出的诊断daemon debuggerd。此进程可以侦测到程序崩溃,并将崩溃时的进程状态信息输出到文件和串口中,以供开发人员分析调试使用。
Debuggerd的数据,被保存在 /data/tombstone/ 目录下(名字取的也很形象,tombstone是墓碑的意思),共可保存10个文件,当超过10个时,会覆盖重写最早生产的文件。 串口中,则直接用DEBUG的tag,输出logcat信息。
信息详解
Debuggerd的输出格式大约如下:
I/DEBUG ( 9114): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 9114): Build fingerprint: 'generic/gs701b/gs701b:4.0.3/IML74K/eng.andy.xia120650:user/test-keys'
I/DEBUG ( 9114): pid: 11053, tid: 11065 >>> net.osaris.turbofly <<<
I/DEBUG ( 9114): signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addrI/DEBUG ( 9114): zr at v0 5596dbd8 v1 41c65990
I/DEBUG ( 9114): a0 a1 5596dbd8 a2 a3 5596dbd8
I/DEBUG ( 9114): t0 5596dbd8 t1 53f6b000 t2 t3 000000a8
I/DEBUG ( 9114): t4 5596dc58 t5 t6 0000001c t7 000000e4
I/DEBUG ( 9114): s0 540d96f0 s1 41c65990 s2 s3I/DEBUG ( 9114): s4 2c143d40 s5 4cf8bdf4 s6 2b8d0178 s7 2c13cdd8
I/DEBUG ( 9114): t8 0000000f t9 53f70748 k0 000000d8 k1I/DEBUG ( 9114): gp 53f93d50 sp 4f7feaf8 s8 4f7feb68 ra 53f7334c
I/DEBUG ( 9114): hi lobvaepc 53f73374
I/DEBUG ( 9114): #00 pc 53f73374 sp 4f7feaf8 /system/lib/egl/libGLESv1_CM_VIVANTE.so
I/DEBUG ( 9114): #01 pc 53f73570 sp 4f7feb28 /system/lib/egl/libGLESv1_CM_VIVANTE.so:glBindTexture+468
I/DEBUG ( 9114): #02 pc 2b76c16c sp 4f7feb58 /system/lib/libdvm.so:dvmPlatformInvoke+220
I/DEBUG ( 9114): #03 pc 41a59c00 sp 4f7feb70 /dev/ashmem/dalvik-LinearAlloc (deleted)
I/DEBUG ( 9114):
I/DEBUG ( 9114): code around pc:
I/DEBUG ( 9114): 53f73354 8fa70018 acf100f4 8e2600f8 8fa50018 ..........&.....
I/DEBUG ( 9114): 53f73364 aca600f8 8fa20018 8c4300f4 8c4400f8 ..........C...D.
I/DEBUG ( 9114): 53f73374 ac8200f4 ac6200f8 8fa30018 8fbf002c ......b.....,...
I/DEBUG ( 9114):