2018년 3월 20일 화요일

cocos에서 디버그 출력(OutputDebugString) 보기


2014. 2. 26. 10:23

아래 내용은 windows에서 cocos2d-x 프로그래밍 하는 경우에만 해당되는 글입니다. 

cocos2d-x에서 코딩을 하다보면 디버그 출력을 찍어서 보는 경우가 있는데요.
처음에 콘솔프로젝트를 만들어서 하는 방법도 있지만 , 윈도우로 만들어서 볼때는 아래와 같이 하는것도 괜찮을것 같습니다.

1) 일단 아래에서 자기 OS에 맞게 32bit 또는 64bit 버전의 windbg를 다운 받아서 설치를 합니다.

일반적인 디버깅이라면 환경설정및 심볼설치를 해야겠지만 단순히 디버깅 문자열만을 보는 것이라면 아무 설정도 하지 않아도 됩니다.

2) 디버깅 문자열을 보려는 cocos 프로그램에 아래와 같이 코드를 넣습니다. 

#ifdef WIN32
    WCHAR wcBuf[100];
    wsprintfW(wcBuf, L"%S", "test string\n");
    OutputDebugString(wcBuf);
#endif

위코드는 windows에서만 작동되기에 #ifdef WIN32 는 반드시 해야 합니다.
OutputDebugString()으로 출력되는 문자열은 프로그램 아무곳에도 보이지 않습니다.
이것은 디버깅 프로그램을 통해서 봐야 합니다.

3) 위코드를 넣은 프로그램(우리가 만드는 게임)을 실행하고 

4) windbg를 실행하고 (미리 실행시켜 두어도 상관 없음 ^^)
File -> Attach to a Process 를 선택
 

5) 실행 프로그램 목록에서 디버깅할 프로그램을 선택
 

6) Save information for workspace ? 를 물어보면 Yes/No 선택
이 경우 No를 선택하는 것이 더 편함 ^^

7) 그럼 프로그램이 멈춰 있는데 이때 Debug -> Go 를 해서 프로그램을 실행
 

아래와 같이 로그들을 확인 가능합니다.
 

8) 디버깅할 프로그램 종료
그럼 아래와 같이 화면이 보이는데 , 이상태는 디버거와 연결이 끊어진 것이 아니기에 
 

반드시 Debug -> Stop Debugging를 해줘야 한다. 
 

* 이걸 하지 않으면 빌드를 해서 실행 파일이 만들어지지 않습니다. 
   디버거가 프로그램을 잡고 있어서 그런거죠.

그러면, 다시 환경 설정을 저장할지 묻는데 No 선택해도 무방합니다. 

조금 불편할 수도 있다고 생각되지만 실시간 디버그 정보 출력에는 유용하다고 생각이 됩니다. 
또한 디버거를 사용함으로써 실행중에 비정상 종료가 생겼을 경우 디버깅을 해 볼 수 있는 장점도 있습니다. 

댓글 없음:

댓글 쓰기