addr2line 사용법
main_2012XXXXXXXX.log 파일에서
I/DEBUG ( 7398): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG(20605): Build fingerprint: '~~~~~~~~~~/user/release-keys'
I/DEBUG(20605): pid: 20611, tid: 20611 >>> [packageName] <<<
I/DEBUG ( 7398): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
I/DEBUG ( 7398): r0 00000000 r1 4013f6cc r2 00000000 r3 00000001
I/DEBUG ( 7398): r4 006a7248 r5 00000000 r6 00000000 r7 5d06eef4
I/DEBUG ( 7398): r8 5e144c10 r9 5d06eeec 10 00000000 fp 5e144c24
I/DEBUG ( 7398): ip 4013f538 sp 5e144ba8 lr 40108508 pc 5a387e06 cpsr 60000030
I/DEBUG ( 7398): d0 400000004ffbd9b5 d1 4000000000000100
I/DEBUG ( 7398): d2 4355000043960000 d3 43b0000043b00000
I/DEBUG ( 7398): d4 4355000041000000 d5 4400400043550000
I/DEBUG ( 7398): d6 4396000043ac0000 d7 000da2a841c00000
I/DEBUG ( 7398): d8 41d3fef66d7930e0 d9 41d3fef66d7c6413
I/DEBUG ( 7398): d10 0000000000000000 d11 0000000000000000
I/DEBUG ( 7398): d12 0000000000000000 d13 0000000000000000
I/DEBUG ( 7398): d14 0000000000000000 d15 0000000000000000
I/DEBUG ( 7398): d16 0000000000000000 d17 0000000000000000
I/DEBUG ( 7398): d18 412b455000000000 d19 3fa8c72b285ce720
I/DEBUG ( 7398): d20 3f114b47b485eb84 d21 bebbab5f885449ad
I/DEBUG ( 7398): d22 3ff0000000000000 d23 3ff5f8ffffffffff
I/DEBUG ( 7398): d24 3e66376972bea4d0 d25 3fc39a09d078c69f
I/DEBUG ( 7398): d26 0000000000000000 d27 0000000000000000
I/DEBUG ( 7398): d28 0000003300000032 d29 3ff5555560000000
I/DEBUG ( 7398): d30 0000000000000000 d31 3fe7fffff4000005
I/DEBUG ( 7398): scr 60000013
I/DEBUG ( 7398):
I/DEBUG ( 7398): #00 pc 001b1e06 /system/lib/libwebcore.so
I/DEBUG ( 7398): #01 pc 001b1e9c /system/lib/libwebcore.so
I/DEBUG ( 7398): #02 pc 0013820c /system/lib/libwebcore.so
I/DEBUG ( 7398): #03 pc 001ade0c /system/lib/libwebcore.so
I/DEBUG ( 7398):
I/DEBUG ( 7398): code around pc:
I/DEBUG ( 7398): 5a387de4 f1d06ae0 bf380001 bd102000 41f0e92d .j....8..
이와 같은 부분을 찾는다.
#00 pc 001b1e06 /system/lib/libwebcore.so <- error가 발생한 address와 fileName
요부분이 error 발생 위치...
Linux서버를 사용 또는 서버에 접속하여 사용 둘 중 한가지 방법으로 문제 발생의 모델과 버전이 맞는 source로 이동한 후에
error가 발생한 libName.so 파일이 있는
/android/out/target/product/모델명/symbols/system/lib$ 아래로 이동하여...
addr2line -C -f -e libwebcore.so(파일명) 001ade0c(address)
이와 같은 명령어를 입력하면... 함수명과 line번호까지 출력~
만약 addr2line이 해당 위치에 없다면, 먼저 cygwin에서 다음과 같은 명령으로 addr2line을 찾는다.
/root
$ find . -name *addr2line
~~ 어쩌고저쩌고
/cygdrive/c/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-addr2line.exe
가장 쉬운 방법은 internet에서 addr2line을 찾아서 해당 위치에 넣은 후 위의 내용 실행~
참고문헌 : http://stackoverflow.com/questions/5314036/how-to-use-addr2line-in-android