예전에 직장 동료가 VC++에서 출력메시지를 VS IDE 출력창에 보여주는건 어떻게 하는거냐고 물어본적이 있다. 그때 잠시 자료를 뒤져서 TRACE 매크로를 쓰는법을 알려주었다.

MSDN에 나와있는 정보를 보면

Sends the specified string to the debugger of the current application.

TRACE(exp )
TRACE(DWORD category, UINT level, LPCSTR lpszFormat, ... )

See ATLTRACE2 for a description of TRACE. TRACE and ATLTRACE2 have the same behavior.

In the debug version of MFC, this macro sends the specified string to the debugger of the current application. In a release build, this macro compiles to nothing (no code is generated at all).

printf처럼 여러 인수를 파라미터로 넘겨 다양한 출력형식이 가능하다.

아래 소스는 하노이탑소스중 일부인데 알고리즘을 확인하기 위해 TRACE매크로를 썼다

void CHanoiCoreLogic::move(int from,int to)
{
       TRACE("\nMove from %d to %d",from,to);
}
디버그 모드로 실행하면 아래와 같이 해당 내용이 VS IDE 출력창에 표시되는것을 볼수 있다
사용자 삽입 이미지

하지만 문제는 MSDN에도 나와있지만 릴리즈 모드에서는 TRACE 매크로가 실행이 안된다. Ctrl + F5로 실행해도 TRACE 매크로를 적용한 출력이 안나온다는 말이다. VC++를 이용해 GUI 프로그램을 만들때 콘솔출력 디버깅을 사용못하고 AfxMessageBox를 이용해야 하는데

(물론 SDI, MDI, 다이얼로그 베이스 프로젝트에서 콘솔창을 띄우는 방법이 있긴 하지만) 가끔 연속되는 값을 메시지 박스로 확인하기에는 어려움이 따른다. 그래서 MS에서는 DebugView라는 별도의 툴을 제공하는데 해당 툴을 이용하면 릴리즈 모드에서도 TRACE 매크로를 이용한 메시지들을 볼수 있다.

DebugView는 http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx 에서

받을수 있으며 다운받아 실행하고 개발중인 프로그램을 실행시키면 아래와 같이 메시지들을

확인할수 있다.

사용자 삽입 이미지

http://serapian.pe.kr/trackback/103 관련글 쓰기