본문 바로가기

ActionScript/Tip

디버그를 쉽게! Arthropod (The easy Flash and AIR Debugger)



Arthropod 은  AIR로 만들어진 Debugger 이다.

디버그를 위해 줄기차게 찍는 trace의 문제점은 결과물이 웹에 올라가면 알수가 없다는 것이다.

Arthropod 은 이 문제점을 해결해준다.

사실 나온지는 꽤 되었는데 이전에 써봤을땐 편하긴 하나 한글이 지원이 되지 않는 등의 불편함등이 있어서

억지로 영어로 쓰려고 노력은 해봤으나  trace("현재상황 : "+_val) 등의 경우 현재상황을 영어로 뭐라고 적는게 직관적일까...고민하는 내모습을 발견하곤 후딱 디버그 해야하는데 이런거까지 신경써야 하는 내모습이 슬퍼 지워버렸다...

그런데 언젠가 다시 방문해보니 업데이트 되어있어서 받아보니 이런부분이 해결되었다.


일단

http://arthropod.stopp.se/index2.php/

위의 경로로 들어가면 air파일을 다운 받을 수 있으며 최초 설치하면  Debug.as파일을 저장할것인지 묻는다.



자신의 상황에 맞게 적당히 저장하자.


이 as 파일의 경로를 추가하던지 swc로 만들어 사용하던지 일단 import 하여 사용할 수 있게 하자. 이부분에 대한 설명은 생략.

기본 사용은 Debug.log("메세지",컬러값); 이다 



air프로그램을 실행하고 해당 메서드를 실행하면 아래처럼 뜬다.

키포인트는 이 swf파일을 웹에 올려서 html상에서 실행되어도 air 프로그램에 찍힌다는 사실. 


아래 3개의 버튼이 있는데

settings 을 누르면 출력할 폰트에 대한 설정을 할 수있고

clear는 누르면 출력된 모든 텍스트가 지워지며 save를 누르면 출력된 텍스트를 파일로 저장할 수 있다.


Settings 창을 연모습. 폰트 설정이 가능해져 한글로도 볼 수 있다.


Arthropod 은 출력 폰트의 컬러지정을 위한 몇가지 상수를 정의해 놓았다. 딱히 생각 나는 컬러가 없으면 사용하자.

아래처럼 사용하면됨.



지원하는 컬러 상수는 아래와 같다.


기본 메서드인 log 외에도 여러가지 메서드를 제공한다.

아래는 그 리스트




array 나 object 메서드의 경우 이름만 봐도 알 수 있듯이 Array 나 Object 타입을 받아 보기좋게 표시해준다.

bitmap 메서드는 이름이 은근히 훼이크인데 BitmapData 타입이나 Bitmap 을 받는게 아니라 DisplayObject를 인자로 받아

bitmap을 찍어 화면에 표시해준다. 2번째 파라메터인 label은 화면에 표시된 Bitmap을 마우스 오버하였을때 나타나는 글자다.



아래는 전체적인 메서드 테스트 코드이다.


_mc는 타임라인상에 만들어둔 무비클립이다. 코드만 이대로 해놓고 왜에러나냐 성질내지 말자.

아래는 결과 스샷



오오...! 


Debug.as 파일이 제공되고 핵심부분은 Air에 있어 Debug.as 파일 자체는 복잡하지 않으므로 커스터마이징 하기 쉽다.

본인의 경우 Debug클래스의 메서드를 사용하면 내부적으로 trace도 같이 찍히게 해놓았다. 왠지 trace가 안찍히면 섭섭함.

혹은 trace를 치면 알아서 파라메터의 타입을 보고 Debug클래스의 메소드도 동시에 실행되게

vaf trace:Function = {...}  등으로 고쳐 평소대로 trace를 써도 좋을 것 같긴 하다.


기본적으로 자동으로 화면이 clear 되지 않아 실행할때마다 앞서 실행한 결과물에 이어서 나오기 때문에

도큐먼트 클래스에서 최초 초기화 시 Debug.clear() 를 써주는게 좋다.



내부적으로 결과를 가공 전송하는 코드가 있으므로 개발과정을 거쳐 런칭직전엔 이 기능을 꺼두는게 좋을 것이다.

trace를 사용할 경우 뭔가 모를 찝찝함에 trace를 일일히 찾아 주석화시키거나 지워버릴때가 있는데

Debug.log 등을 사용했다면 한줄로 끝난다.


allowLog = false  ㅋ끝ㅋ


Arthropod 의 최고의 장점은 웹에서 실행해도 내 pc의 air프로그램에서 디버깅코드가 찍힌다는 점이지만

object를 for in 등의 구문으로 돌리지않아도 이쁘게 보여진다는점,

array 역시 눈에 확 들어오게 출력되는점 역시 무시못하는 장점이다.