[팁] 안드로이드 cocos2d-x 디버깅 시

|

출처 : http://www.androidpub.com/1943024


ndk 디버그








안드로이드 ant

Apache Ant

위키백과, 우리 모두의 백과사전.
Apache Ant (Another Neat Tool)
Apache Ant Logo
개발자아파치 소프트웨어 재단
최근 버전1.9.2 / 2013년 7월 12일, 179일 경과
프로그래밍 언어자바
운영 체제크로스 플랫폼
종류빌드 도구
라이선스아파치 라이선스 2.0
웹사이트http://ant.apache.org

Apache Ant는 자바 프로그래밍 언어에서 사용하는 자동화된 소프트웨어 빌드 도구이다. 유닉스나 리눅스에서 사용되는 make와 비슷하나 자바언어로 구현되어 있어 자바 실행환경이 필요하며 자바 프로젝트들을 빌드하는데 표준으로 사용된다.

make와 눈에 띄는 가장 다른 부분은 빌드를 위한 환경구성을 XML 파일을 사용한다는 점이다. 기본적인 빌드 파일명은 build.xml 이다.

로고는 이름(ANT)에 따라 개미 모양으로 만들어졌으나 이는 Another Neat Tool의 약어라고 한다. [1]

최초 빌드 도구로서 제작되었으나 점점 많은 기능이 추가되면서 빌드와 배포, 유닛 테스트 등을 포함하는 통합 툴로서 발전되고 있다.

역사[편집]

Ant는 선 마이크로시스템즈에서 나중에 톰캣으로 발전하게 되는 JSP/Servlet 표준구현 엔진을 오픈소스화 하던 중 제임스 던컨 데이비슨에 의해 최초로 구상되었다. 사유 소프트웨어인 make를 이용하여 솔라리스에서 작업했으나 다른 환경에서는 이를 수행할 수 있는 오픈소스 소프트웨어가 없었기 때문이다.

Ant의 최초 버전은 시스템 독립적으로 톰캣을 빌드하기 위한 툴로서 생겨났으며 2000년 7월 19일 독립형 제품으로서 발표되었다(1.1 버전). 처음에는 자카르타 프로젝트의 하위 프로젝트로서 시작했으나 2002년 10월 18일 아파치의 최상위 프로젝트로 승격해서 현재에 이르고 있다.

수많은 오픈소스가 Ant 를 통한 자동 빌드를 지원하고 있으며 명실상부한 자바 프로젝트의 공식적인 빌드 도구로서 사용된다.

버전별 최소 요구 자바 버전[편집]

Apache Ant는 각 버전별로 다음과 같은 최소 자바 버전을 요구한다. 단, 컴파일 작업이 필요하기 때문에 JRE가 아닌 JDK가 필요하며 일부 필수 패키지가 아닌 선택적 패키지의 경우는 아래 내용보다 더 높은 버전을 요구할 수 있다. [2]

버전별 최소 요구 자바버전
Ant 버전최소 자바 버전
1.1 ~ 1.5.41.1
1.6.0 ~ 1.6.51.2
1.7.0 ~ 1.7.11.3
1.8.0 ~ 1.8.31.4
현재 개발버전(SVN trunk)1.5(5.0)

같이 보기[편집]

참고 자료[편집]

  1. 이동 (영어) Apache Ant - FAQ아파치 소프트웨어 재단. 2012년 6월 17일에 확인.
  2. 이동 (영어) Which version of Java is required to run Apache Ant?아파치 소프트웨어 재단. 2012년 6월 17일에 확인.

바깥 고리[편집]








ndk-stack 사용하


NDK 작업시 Error 메세지가 아래와 같이 휴머니즘이 부족할때
  -> symbol로 표시된 주소에 정보가 숨어 있다. 이때 ndk-stack을 사용하자..
      ndk-stack 은 gdb objdump 를 쉽게 해주는 명령어 같다..

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

id: 그냥가자그냥가자

저는 그냥 gdb로 직접 조회하는 편이긴 한데... /obj/local/armeabi 이게 핵심이네요...

댓글
2012.01.17 14:02:37
id: 아즈라엘아즈라엘

ndk-gdb 사용하시는가봐요?

.so 위치에서 해야 되는거 같기도 하고..하도 삽질을 이상하게 해서 기역이 가물하네요 ..

예전에 해봤을땐 잘 안붙는거 같은데 .. 디바이스 gdb서버가 안좋은거 같기도 하고..^^

아니면 제가 명령어를 잘 몰라서 그런거 일수도 있고..ㅜㅜ

댓글
2012.01.17 17:29:21
id: 그냥가자그냥가자

저는 그냥 arm-eabi-gdb 씁니다. ndk-gdb도 동작이 좀 희한해서 ㅡㅡㅋ

댓글
2012.01.17 20:53:14
id: 아즈라엘아즈라엘

한번 시도해 봐야겠네요..^^

좋은 정보 감사합니다.


Trackback 0 And Comment 0