2014년 5월 15일 목요일

[미완] [Win32/MFC] OutputDebugString, TRACE

[미완] [Win32/MFC] OutputDebugString, TRACE

OutputDebugString() 함수는 데이터를
(Visual Studio 기준) 출력창에 내용을 출력하는데
일반 사용자 컴퓨터에서도 DebugView 프로그램으로 출력 내용을 확인 할 수 있다.
그래서 디버그 할 때 아주 중요한 함수이다.

단점은 OutputDebugString() 함수 호출시 커널 모드로 전환이 되어서
성능에 부정적인 영향을 미칠 수 있다.

그래서 TRACE가 나왔다.
TRACE는 내부적으로 OutputDebugString() 함수를 호출 하지만
Debug모드일때만 호출을 하고 Release모드일때는 호출을 하지 않는다.
단점은 MFC이다.

그래서 OutputDebugString()를 TRACE처럼 Debug모드에서만 출력되게 구현을 해봤다.

#if _DEBUG
  #define DEBUG_VIEW_MY(str) OutputDebugString(str);
#else
  #define DEBUG_VIEW_MY(str) ( (void) 0 );
#endif

원래
OutputDebugString( TEXT("테스트") );
이렇게 쓰는 것을

DEBUG_VIEW_MY( TEXT("테스트") );
이렇게 사용하면
Debug모드에서만 OutputDebugString를 출력한다.

* DebugView 프로그램을 통해서
OutputDebugString()함수의 출력문을 보는데
DebugView는 OutputDebugString() 말고도 커널 모드 DbgPrint() 도 모니터링한다.

* DebugView는 Visual Studio에서 F5로 실행시에는
OutputDebugString()가 출력 안된다.
왜냐하면 Visual Studio에서 OutputDebugString()를 가져가기 때문이다.
그래서 DebugView에서 보고 싶으면 Visual Studio에서 Ctrl+F5(일반실행)으로 하면 출력된다.

댓글 없음:

댓글 쓰기