안드로이드 스터디 - Android One
(글 수 60)
NDK 작업시 Error 메세지가 아래와 같이 휴머니즘이 부족할때
-> symbol로 표시된 주소에 정보가 숨어 있다. 이때 ndk-stack을 사용하자..
ndk-stack 은 gdb objdump 를 쉽게 해주는 명령어 같다..
01-16 19:50:25.746: I/DEBUG(1230): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-16 19:50:25.746: I/DEBUG(1230): Build fingerprint: 'kt_kr/htc_ace/ace:2.3.3/GRI40/98479:user/release-keys'
01-16 19:50:25.746: I/DEBUG(1230): pid: 20493, tid: 20505 >>> org.cocos2dx.application <<<
01-16 19:50:25.746: I/DEBUG(1230): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
01-16 19:50:25.746: I/DEBUG(1230): r0 00000027 r1 deadbaad r2 a0000000 r3 00000000
01-16 19:50:25.746: I/DEBUG(1230): r4 00000001 r5 00000000 r6 00000130 r7 45827f44
01-16 19:50:25.746: I/DEBUG(1230): r8 45927b40 r9 45827f3c 10 45827f28 fp 800a73d4
01-16 19:50:25.746: I/DEBUG(1230): ip afd46788 sp 45927960 lr afd19309 pc afd15dd8 cpsr 60000030
01-16 19:50:25.756: I/DEBUG(1230): d0 433a3a6432736f63 d1 2a7463656a624f43
01-16 19:50:25.756: I/DEBUG(1230): d2 6f636f746f725072 d3 6f6328292a3a3a6c
01-16 19:50:25.756: I/DEBUG(1230): d4 533a3a6432736f63 d5 50726f7463656c65
01-16 19:50:25.756: I/DEBUG(1230): d6 2a6c6f636f746f72 d7 282064696f76202c
01-16 19:50:25.756: I/DEBUG(1230): d8 0000000000000000 d9 0000000000000000
01-16 19:50:25.756: I/DEBUG(1230): d10 0000000000000000 d11 0000000000000000
01-16 19:50:25.756: I/DEBUG(1230): d12 0000000000000000 d13 0000000000000000
01-16 19:50:25.756: I/DEBUG(1230): d14 0000000000000000 d15 0000000000000000
01-16 19:50:25.756: I/DEBUG(1230): d16 0000000000000001 d17 0000000000000000
01-16 19:50:25.756: I/DEBUG(1230): d18 3fab8550ffe43ebc d19 3fd5555555555563
01-16 19:50:25.756: I/DEBUG(1230): d20 0000000000000000 d21 3f782d03241e5659
01-16 19:50:25.756: I/DEBUG(1230): d22 3f96ac9c0ec40323 d23 3f8261052f9fa3be
01-16 19:50:25.756: I/DEBUG(1230): d24 3f582b387b22f3c1 d25 3f6dcabc4571abc1
01-16 19:50:25.756: I/DEBUG(1230): d26 3f30837711244472 d27 3f4375429245411f
01-16 19:50:25.756: I/DEBUG(1230): d28 3f133abc51b768d7 d29 3f1420ec8fb87f66
01-16 19:50:25.756: I/DEBUG(1230): d30 3efb2a7074bf7ad4 d31 0000000000000000
01-16 19:50:25.756: I/DEBUG(1230): scr 60000012
01-16 19:50:25.826: I/DEBUG(1230): #00 pc 00015dd8 /system/lib/libc.so
01-16 19:50:25.826: I/DEBUG(1230): #01 pc 0001ca5c /system/lib/libc.so
01-16 19:50:25.826: I/DEBUG(1230): #02 pc 000f0f6e /data/data/org.cocos2dx.application/lib/libcocos2d.so
01-16 19:50:25.826: I/DEBUG(1230): #03 pc 000f1464 /data/data/org.cocos2dx.application/lib/libcocos2d.so
01-16 19:50:25.836: I/DEBUG(1230): code around pc:
01-16 19:50:25.836: I/DEBUG(1230): afd15db8 2c006824 e028d1fb b13368db c064f8df
01-16 19:50:25.836: I/DEBUG(1230): afd15dc8 44fc2401 4000f8cc 49124798 25002027
01-16 19:50:25.836: I/DEBUG(1230): afd15dd8 f7f57008 2106ec7a edd6f7f6 460aa901
01-16 19:50:25.836: I/DEBUG(1230): afd15de8 f04f2006 95015380 95029303 e93cf7f6
01-16 19:50:25.836: I/DEBUG(1230): afd15df8 462aa905 f7f62002 f7f5e948 2106ec66
01-16 19:50:25.836: I/DEBUG(1230): code around lr:
01-16 19:50:25.836: I/DEBUG(1230): afd192e8 4a0e4b0d e92d447b 589c41f0 26004680
01-16 19:50:25.836: I/DEBUG(1230): afd192f8 686768a5 f9b5e006 b113300c 47c04628
01-16 19:50:25.836: I/DEBUG(1230): afd19308 35544306 37fff117 6824d5f5 d1ef2c00
01-16 19:50:25.836: I/DEBUG(1230): afd19318 e8bd4630 bf0081f0 0002811c ffffff80
01-16 19:50:25.836: I/DEBUG(1230): afd19328 b086b570 f602fb01 9004460c a804a901
01-16 19:50:25.836: I/DEBUG(1230): stack:
01-16 19:50:25.836: I/DEBUG(1230): 45927920 afd42564
01-16 19:50:25.836: I/DEBUG(1230): 45927924 000cbb70
01-16 19:50:25.836: I/DEBUG(1230): 45927928 00000015
01-16 19:50:25.836: I/DEBUG(1230): 4592792c afd183d1 /system/lib/libc.so
01-16 19:50:25.836: I/DEBUG(1230): 45927930 afd4260c
01-16 19:50:25.836: I/DEBUG(1230): 45927934 afd425b8
01-16 19:50:25.836: I/DEBUG(1230): 45927938 00000000
01-16 19:50:25.836: I/DEBUG(1230): 4592793c afd19309 /system/lib/libc.so
01-16 19:50:25.836: I/DEBUG(1230): 45927940 00000001
01-16 19:50:25.836: I/DEBUG(1230): 45927944 45927974
01-16 19:50:25.836: I/DEBUG(1230): 45927948 00000130
01-16 19:50:25.836: I/DEBUG(1230): 4592794c 45827f44
01-16 19:50:25.836: I/DEBUG(1230): 45927950 45927b40
01-16 19:50:25.836: I/DEBUG(1230): 45927954 afd1862b /system/lib/libc.so
01-16 19:50:25.836: I/DEBUG(1230): 45927958 df002777
01-16 19:50:25.836: I/DEBUG(1230): 4592795c e3a070ad
01-16 19:50:25.836: I/DEBUG(1230): #00 45927960 45827f3c
01-16 19:50:25.836: I/DEBUG(1230): 45927964 45827f28
01-16 19:50:25.846: I/DEBUG(1230): 45927968 800a73d4
01-16 19:50:25.846: I/DEBUG(1230): 4592796c afd18951 /system/lib/libc.so
01-16 19:50:25.846: I/DEBUG(1230): 45927970 afd425b8
01-16 19:50:25.846: I/DEBUG(1230): 45927974 fffffbdf
01-16 19:50:25.846: I/DEBUG(1230): 45927978 afd1ca5d /system/lib/libc.so
01-16 19:50:25.846: I/DEBUG(1230): 4592797c afd3b319 /system/lib/libc.so
01-16 19:50:25.846: I/DEBUG(1230): 45927980 807a959c /data/data/org.cocos2dx.application/lib/libcocos2d.so
01-16 19:50:25.846: I/DEBUG(1230): 45927984 afd1ca61 /system/lib/libc.so
01-16 19:50:25.846: I/DEBUG(1230): #01 45927988 000001f5
01-16 19:50:25.846: I/DEBUG(1230): 4592798c 807a9794 /data/data/org.cocos2dx.application/lib/libcocos2d.so
01-16 19:50:25.846: I/DEBUG(1230): 45927990 807a9794 /data/data/org.cocos2dx.application/lib/libcocos2d.so
01-16 19:50:25.846: I/DEBUG(1230): 45927994 00000000
01-16 19:50:25.846: I/DEBUG(1230): 45927998 00000000
01-16 19:50:25.846: I/DEBUG(1230): 4592799c 806f0f71 /data/data/org.cocos2dx.application/lib/libcocos2d.so
1. 해당 프로젝트로 이동
cd /Users/user/Downloads/cocos2d-cocos2d-x-124aee8/HelloWorld/android
2. ndk-stack 를 환경페스로 잡아준다. 파란색은 프로젝트 경로
adb logcat | ndk-stack -sym /Users/user/Downloads/cocos2d-cocos2d-x-124aee8/HelloWorld/android/obj/local/armeabi
3. 결과
********** Crash dump: **********
Build fingerprint: 'kt_kr/htc_ace/ace:2.3.3/GRI40/98479:user/release-keys'
pid: 20454, tid: 20466 >>> org.cocos2dx.application <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
Stack frame #00 pc 00015dd8 /system/lib/libc.so
Stack frame #01 pc 0001ca5c /system/lib/libc.so
Stack frame #02 pc 000f0f6e /data/data/org.cocos2dx.application/lib/libcocos2d.so: Routine initFromNormalSprite in jni/../../../cocos2dx/menu_nodes/CCMenuItem.cpp:501
Stack frame #03 pc 000f1464 /data/data/org.cocos2dx.application/lib/libcocos2d.so: Routine initFromNormalImage in jni/../../../cocos2dx/menu_nodes/CCMenuItem.cpp:628
Crash dump is completed
저는 그냥 gdb로 직접 조회하는 편이긴 한데... /obj/local/armeabi 이게 핵심이네요...