2011. 4. 22. 16:05

플래시 디버거 툴 중에 몬스터 디버거라는게 있다는걸

플래시 액션스크립트 카페(http://cafe.naver.com/flashactionscript)에서 알게 되었는데요.

이게 어디에 어떻게 쓰는 물건인가 살펴보면서 간략정리를 시도해보았습니다.

 

공식 홈페이지 - http://www.monsterdebugger.com/

AsDoc - http://www.monsterdebugger.com/asdoc/

 

설치는 홈페이지에서 다운받으셔서 air 파일을 설치하면 됩니다.

에어로 배포되니 윈도우건 맥의 osx건 상관없이 사용할 수 있는 장점이 있네요.

air가 설치가 안되셨으면 먼저 어도비 홈페이지부터 가셔서 air부터 설치하시면 되구요.

 

몬스터디버거의 첫 실행화면

Untitled-1

 

처음 실행시키면 이런 모양으로 뜨네요.

영어로 뭐라뭐라 써있는데 까막눈이라 읽을줄 몰라서 일단 패스.

Untitled-3

 

빨간색으로 체크해둔 부분을 누르면

1. Project type
    Actionscript 3.0 / Flex MXML (플래시와 플렉스 모두 지원하는군요)

2. Project target
    Web/Desktop  /  Mobile (모바일용으로도 지원하나봐요)

3. Client SWC
    SWC 파일을 저장하는 창이 나옵니다.

4. Example Code

 

Untitled-2

저는 웹쟁이니까 Actionscript 3.0 / Web 기준으로..!!

 

Flash CS5 / Flash Builder Burrito 를 사용하였습니다. (플래시빌더는 저도 어색어색)

플래시에서 fla 파일을 만들고 플래시빌더에서 Flash Professional Project 를 만들었습니다.

fla 파일에 아까 저장해두었던 MonsterDebugger.swc 파일을 연결해줍니다. (저는 fla 파일과 같은 경로에 저장했습니다.)

 

Untitled-5Untitled-6Untitled-7

빨간색 체크 부분을 순서대로 눌러가며 찾아시면 끝.

 

이걸 언제 쓰면 유용하려나요?

웹상에 swf 파일을 올려놓고 동작이 안되거나 하는 것들을 체크하려면 참 번거롭고 귀찮죠.

그런 상황들이 어떤게 있을까요.

 

메뉴 네비게이션 같은 경우 xml 경로를 flashVars로 받아서 swf 가 로드해서 사용하는데 경로가 잘못되었을 경우

경로가 제대로 받아와지는지 확인하려면 다른 분들은 어떻게 확인 하실지 모르겠지만

저는 텍스트 필드를 화면에 붙여넣고 그 안에 경로를 찍어서 확인해봅니다.

확인이 끝나면 텍스트필드를 없애고 확인을 위한 관련 코드를 또 삭제해줘야 하죠.

 

이런 경우 이렇게 사용할 수 있을거 같네요.

HTML 파일 추가.
<param name="flashVars" value="xmlPath=xml경로" />

Actionscript Code.
var paramObj:Object = this.loaderInfo.parameters;
var xmlPath:String = paramObj.xmlPath;            
MonsterDebugger.trace(this, xmlPath);

Untitled-8

몬스터디버거에는 이렇게 찍혀나오네요. 외부에서 받아오는 값이 제대로 들어오는지 확인하기 편한듯 합니다.

 

또 이런 경우도 있을수 있겠네요.

서버쪽으로 값을 전송할때 전송될 값들이 제대로 들어가는지 확인 할 때

GET 방식으로 보낸다면 URL에 찍혀나올테니 상관 없겠지만

POST 방식으로 보낸다면 눈으로 확인하기가 쉽지 않죠.

 

this.send_btn.addEventListener( MouseEvent.CLICK, onSendClick);

private function onSendClick( e:MouseEvent ):void {
      var url:String = "http://doworld.tistory.com/";
      var request:URLRequest = new URLRequest( url );
      var variables:URLVariables = new URLVariables();
            
      variables.time = new Date().getTime();
      variables.myName = "doworld";
            
      request.method = URLRequestMethod.POST;
      request.data = variables;

      MonsterDebugger.trace(this, variables);

      navigateToURL( request );
}

SEND 버튼을 누르면 이름과 지금 시간을 보내는 코드가 있습니다.

GET 방식으로 보낸다면

Untitled-9

이렇게 브라우저 URL 부분에서 확인이 가능하지만

POST 방식으로 전송한다면 몬스터 디버거에서 편하게 할 수 있습니다.

Untitled-10

 

GET 과 POST 의 전송방식의 차이점은

GET : 속도가 빠르지만 정보가 노출되어 보안에 취약하고 정보의 크기가 1024바이트로 제한적.
POST : URL 주소에 정보노출이 되지 않으니 보안성이 좋고 정보의 크기 제한이 없지만 GET방식보다 느리다.

좀 더 자세한 내용이 궁금하신분들은 따로 검색해보세요.

 

만약에 버튼 위에 눈에 보이지 않는 무언가가 덮혀 있어서 버튼이 클릭되지 않는다고 가정해봅니다.

코드에서 작성되어서 addChild 된 녀석이 어느샌가 나타나서 가리고 있으면

이게 언제 나타나서 가리고 있는지 참 알아내려면 참 속상합니다-_-;;

Untitled-12

몬스터 디버거를 이용하니 이런 점도 편하네요.

화면에 붙어있는 오브젝트들 리스트가 다 나옵니다. (인스턴스 네임까지 찍혀나오네요)

하나를 클릭해보니 해당 오브젝트가 웹상에 있는 swf 에서도 저렇게 표시가 되니 찾기도 편하고

오른쪽 Properties 탭을 보면 속성들이 표시되는데

x, y 좌표 또는 alpha 값이라던가 visible 값을 바꾼다던가 저기서 값을 바꾸면 웹상에 있는 swf 에도 변화가 일어납니다.

 

Methods 탭을 눌러보면 그 오브젝트의 메소드들이 주우욱 나오는데 public 메소드들만 나올거 같네요.

 

Untitled-13 

FPS 와 메모리 점유율도 보기 편하게 제공해주고요.

 

 

MonsterDebugger.trace(); 이외에도 여러가지 메서드 들이 제공되고 있습니다.

 

MonsterDebugger.clear();

trace 한 결과들을 모두 지워줍니다.

 

MonsterDebugger.log( ..args );

trace와 비슷한거 같은데 여러개를 한번에 확인할 수 있네요. ex) MonsterDebugger.log( x, y, width, height );

 

MonsterDebugger.snapshot();

메소드 이름에서 알수 있듯이 스냅샷을 찍을수 있나봐요. 숨겨진 인터페이스 항목을 표시해야 할 경우 유용할 수 있다네요.

 

MonsterDebugger.breakpoints();

이번에 업데이트 된 몬스터디버거 3.0 버전부터 생겼나본데요. 중단점을 설정해두고 디버깅 할 수 있게끔 하는 녀석인듯.

 

 

마지막으로 플래시에서 trace() 로 확인을 하고 웹에 올리기 전엔 trace() 문을 사용한 곳들을 찾아다니면서

주석처리를 해주거나 지워줬었는데요. ( trace()도 많이 찍어놓으면 퍼포먼스가 떨어지더라구요 )

 

MonsterDebugger.enabled = false;

 

몬스터 디버거 초기화 해둔곳 바로 밑에 줄에 요렇게 한줄 넣어주면 일일이 찾아다니면서 주석 또는 삭제 할 필요없이

몬스터 디버거 관련 코드는 모두 기능 상실하네요.

Posted by Doworld - a.k.a 여리