Computer

addr2line 사용법

창천(蒼天) 2012. 9. 21. 10:34

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