아래의 TRACE(.) 안될때는, OutputDebugString(.) 사용


#include <windows.h>


 char buf[256];

 sprintf(buf,"%d \n",nFingerCount);

 OutputDebugString(buf);




TRACE(.) 위한 define문 :

#define ENABLE_TRACE  // Can depend on _DEBUG or NDEBUG macros

---------------------------------

출처: http://blog.daum.net/pg365/45


DebugView는 프로그램이 실행되면서 출력하는 디버그 메시지를 표시하는 디버깅 도구입니다. Visual Studio에서 프로그램을 디버깅으로 실행(F5 키를 눌러 실행)할 때, TRACE가 내보내는 메시지는 통합환경 하단의 Output 창에 출력 됩니다. 하지만, 디버그로 컴파일 된 실행 파일을 Visual Studio가 없는 환경에서 실행할 때 출력되는 디버그 메시지들은 어떻게 볼 수 있을까요? 이런 경우 사용 가능한 도구가 DebugView 입니다.

 

아래와 같이, 코드내에 TRACE를 써서 두 변수 x, y 값을 디버그 메시지로 출력해 보겠습니다.

 

int x = 5;
double y = 5.5;

 

TRACE ("x = %d, y=%f\n", x, y);

 

Visual Studio 상에서 F5 키를 눌러 디버깅으로 실행하면 하단 Output 창에 x, y 변수의 값이 찍히는 것이 보입니다. 디버깅을 위해 주로 사용하던 익숙한 방법입니다.

 

 

 

이번에는, 코드는 디버그로 컴파일 되어 있지만, Ctrl+F5 키를 눌러 디버깅 없이 실행해 보겠습니다. 즉, Visual Studio가 코드 디버깅에 개입하지 않고 실행 파일만 따로 실행함을 의미합니다. 물론, DebugView는 먼저 실행되고 있어야 합니다.

 

그렇다면, 다음 그림과 같이 DebugView 창에서 TRACE로 내보낸 디버그 메시지가 표시됩니다.

 

 

실제로 DebugView를 실행해 보면, 정작 현재 디버깅 중인 프로그램의 디버깅 메시지만 출력되는 것이 아니라 다른 프로그램들이 내보내는 디버깅 메시지들도 뒤섞여 출력되는 것을 볼 수 있습니다. 이럴 때는 필터 옵션을 잘 사용하는 것이 좋겠습니다.

 

DebugView에 대한 소개 글을 읽어 보면, 로컬 PC의 디버깅 뿐만이 아니라 네트워크 상에 있는 다른 컴퓨터도 디버깅 가능하고. 커널-모드 디버깅과  WIN32 디버그 출력도 표시할 수 있다고 합니다.


아래 페이지에서 DebugView 프로그램을 무료로 다운받아 사용하실 수 있습니다.

http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

Posted by 세모아
,