查看栈信息中 .so文件里地址对应的方法名称

在Android开发中,涉及到JNI时,有时会报告非常底层栈信息,在栈信息中 仅仅给出了.so文件出错位置的地址,根本看不成问题所在,但是如果使用arm-eabi-addr2line 命令,就可以把地址信息转换成方法名称:

arm-eabi-addr2line 命令 在%ANDROID_SOURCE%\prebuilt\linux-x86\toolchain\arm-eabi-4.4.0\bin;


例如有如下的栈信息:

 

02-21 13:34:39.621 I/DEBUG   (   79): pid: 394, tid: 560  >>> android.process.media <<<
02-21 13:34:39.621 I/DEBUG   (   79): signal 11 (SIGSEGV), fault addr 4b98b000
02-21 13:34:39.621 I/DEBUG   (   79):  r0 4b98a054  r1 00000000  r2 00000e94  r3 4b98b000
02-21 13:34:39.621 I/DEBUG   (   79):  r4 00000000  r5 4b989f14  r6 9ea08104  r7 0029b0e5
02-21 13:34:39.621 I/DEBUG   (   79):  r8 4b98a564  r9 43ddfc68  10 43ddfc50  fp 00290840
02-21 13:34:39.621 I/DEBUG   (   79):  ip 9ea0816c  sp 4b9898c8  lr 9ea05393  pc afd1cde6  cpsr 20000030
02-21 13:34:39.621 I/DEBUG   (   79):  d0  0000004442880000  d1  3ff0000042880000
02-21 13:34:39.621 I/DEBUG   (   79):  d2  bfd3441350baf6de  d3  c1493000c1323800
02-21 13:34:39.621 I/DEBUG   (   79):  d4  4900000040dcb000  d5  000000000006e580
02-21 13:34:39.621 I/DEBUG   (   79):  d6  4515a00000000800  d7  40800000c48ee000
02-21 13:34:39.621 I/DEBUG   (   79):  d8  0000000000000000  d9  0000000000000000
02-21 13:34:39.621 I/DEBUG   (   79):  d10 0000000000000000  d11 0000000000000000
02-21 13:34:39.621 I/DEBUG   (   79):  d12 0000000000000000  d13 0000000000000000
02-21 13:34:39.621 I/DEBUG   (   79):  d14 0000000000000000  d15 0000000000000000
02-21 13:34:39.621 I/DEBUG   (   79):  scr 80000012
02-21 13:34:39.621 I/DEBUG   (   79):
02-21 13:34:39.661 I/DEBUG   (   79):          #00  pc 0001cde6  /system/lib/libc.so
02-21 13:34:39.661 I/DEBUG   (   79):          #01  pc 00005390  /system/lib/libdrm1.so
02-21 13:34:39.661 I/DEBUG   (   79):          #02  pc 0000321c  /system/lib/libdrm1.so

02-21 13:34:39.661 I/DEBUG   (   79):
02-21 13:34:39.661 I/DEBUG   (   79): code around pc:
02-21 13:34:39.661 I/DEBUG   (   79): afd1cdc4 429a3301 2000d1f4 46c0bd30 2a00b510

 

则执行以下命令:

arm-eabi-addr2line -f -e %ANDROID_SOURCE%/out/target/product/xxxxx/system/lib/libdrm1.so 00005390


返回结果就是该地址对应的方法名称。

你可能感兴趣的:(android,linux,F#,jni,FP)