메뉴 건너뛰기


Developer > Development Tools
Visual C를 사용하여 개발할때 다음의 함수를 이용하여 실행 중 Debug창에 실행 중 메시지를 출력할 수 있습니다.
 
일반적으로 윈도우즈 프로그램 개발하던 중 실행중의 어떤 변수의 메모리 값을 참조하고 싶을때 MessageBox로 화면에 값을 출력하게 해서 띄웁니다. 디버깅 상태라면 break point를 설정하고 프로그램의 실행을 멈춘 후 확인할 수도 있습니다.
이런 방법은 실행을 중단시켜야 한다는 단점이 있습니다.
콘솔프로그램이라면 printf()함수로 화면에 그냥 찍어보면 될 것입니다.
그러나 이 방법도 원래 화면에 출력되어야 하는 부분과 임시로 찍어보는 출력내용들이 섞여 나와서 분석하기 힘든 경우가 있습니다.
 
그런 경우 아래의 함수를 사용하면 됩니다. 
물론 디버깅 상태로 실행해야 만 볼 수 있습니다.
 
#ifdef WIN32 #include <windows.h> #include <tchar.h> #include <stdio.h> #include <crtdbg.h> #endif void _NickTrace(char* lpszFormat, ...) { #ifdef WIN32 char szBuffer1[512]; char* lpBuf; char* lpsz; char szBuffer[512]; va_list args; va_start(args, lpszFormat); _vsntprintf(szBuffer1, sizeof(szBuffer1)/sizeof(szBuffer1[0]), lpszFormat, args); va_end(args); lpsz = szBuffer1; lpBuf = szBuffer; while (*lpsz != '\0') { if (lpBuf > szBuffer + sizeof(szBuffer)/sizeof(szBuffer[0]) - 3) { *lpBuf = '\0'; if ((1 == _CrtDbgReport(_CRT_WARN, NULL, 0, NULL, "%s", szBuffer))) _CrtDbgBreak(); lpBuf = szBuffer; } if (*lpsz == '\n') *lpBuf++ = '\r'; *lpBuf++ = *lpsz++; } *lpBuf = '\0'; if ((1 == _CrtDbgReport(_CRT_WARN, NULL, 0, NULL, "%s", szBuffer))) _CrtDbgBreak(); #else return; #endif }
 
 
다음과 같이 사용할 수 있습니다.
 
int main() { int i=100; _NickTrace("여기는 메인의 시작입니다.\n"); _NickTrace("현재 i의 값은 %d입니다.\n", i); _NickTrace("프로그램이 종료 됩니다.\n"); return 0; }
 
위 프로그램을 실행한 결과는 다음과 같습니다.
 
20070822_132054.png
 
 
 
Creative Commons License
Creative Commons License이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
Copyright 조희창(Nicholas Jo). Some rights reserved. http://bbs.nicklib.com