검색결과 리스트
-- VC++에 해당되는 글 48건
- 2010.08.06 OutputDebugString
글
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
윈도우 프로그래밍을 할 때, 디버그 모드에서는 잘 돌아가던 프로그램이 릴리즈 모드에서 이상한 증상을 보이면 참 난감하다. 물론 Visual Studio 2005는 릴리즈 모드에서도 디버깅이 가능한 것처럼 보이지만 실제로 해보면 코드추적(tracing)도 잘 안 되고, 변수값도 이상하게 찍히기 때문에 별로 도움이 안 된다.
인자로 넘긴 문자열을 Visual Studio 출력창에 찍어주는 OutputDebugString 함수를 쓰면 예전에 printf()로 하던 것처럼 디버깅할 수 있다. 특히 DebugView라는 프로그램을 실행하면 이 함수의 출력값을 -Visual Studio 출력창이 아닌- 윈도우 화면으로 확인할 수 있기 때문에 다른 사람의 컴퓨터에서 문제가 생겼을 때 아주 유용하다.
아래와 같이 함수를 하나 만들어 두면,
void myOutputDebugString(LPCTSTR pszStr, ...)
{
#ifdef _MY_DEBUG
TCHAR szMsg[256];
va_list args;
va_start(args, pszStr);
_vstprintf_s(szMsg, 256, pszStr, args);
OutputDebugString(szMsg);
#endif
}
이렇게 사용할 수 있다.
int n = 5;
TCHAR s[80] = _T("hello");
myOutputDebugString(_T("n = %d, s = %s\n"), n, s);
단, 개발 완료 후 최종 사용자에게 배포할 때에는 이 OutputDebugString()이 호출되지 않도록 주의해야 한다. 너무나 당연한 것이, 입장을 바꾸어 내가 디버깅을 하려는데 DebugView 창에 듣도 보도 못한 프로그램이 이상한 메시지를 쏟아놓고 있으면 얼마나 짜증이 나겠는가 말이다. 국내의 한 상용 프로그램은 그 처리를 제대로 안 한 덕분에, 내가 아는 어떤 분으로부터 걸핏하면 "디버그 계의 슈뤠귀"라는 소리를 듣는다. 그것이 바로 위의 함수에서 _MY_DEBUG라는 값을 따로 정의해서 사용하는 이유다.
출처 : http://4four.tistory.com/42
인자로 넘긴 문자열을 Visual Studio 출력창에 찍어주는 OutputDebugString 함수를 쓰면 예전에 printf()로 하던 것처럼 디버깅할 수 있다. 특히 DebugView라는 프로그램을 실행하면 이 함수의 출력값을 -Visual Studio 출력창이 아닌- 윈도우 화면으로 확인할 수 있기 때문에 다른 사람의 컴퓨터에서 문제가 생겼을 때 아주 유용하다.
아래와 같이 함수를 하나 만들어 두면,
void myOutputDebugString(LPCTSTR pszStr, ...)
{
#ifdef _MY_DEBUG
TCHAR szMsg[256];
va_list args;
va_start(args, pszStr);
_vstprintf_s(szMsg, 256, pszStr, args);
OutputDebugString(szMsg);
#endif
}
이렇게 사용할 수 있다.
int n = 5;
TCHAR s[80] = _T("hello");
myOutputDebugString(_T("n = %d, s = %s\n"), n, s);
단, 개발 완료 후 최종 사용자에게 배포할 때에는 이 OutputDebugString()이 호출되지 않도록 주의해야 한다. 너무나 당연한 것이, 입장을 바꾸어 내가 디버깅을 하려는데 DebugView 창에 듣도 보도 못한 프로그램이 이상한 메시지를 쏟아놓고 있으면 얼마나 짜증이 나겠는가 말이다. 국내의 한 상용 프로그램은 그 처리를 제대로 안 한 덕분에, 내가 아는 어떤 분으로부터 걸핏하면 "디버그 계의 슈뤠귀"라는 소리를 듣는다. 그것이 바로 위의 함수에서 _MY_DEBUG라는 값을 따로 정의해서 사용하는 이유다.
출처 : http://4four.tistory.com/42
'-- VC++' 카테고리의 다른 글
동기화객체 비교 (0) | 2011.08.26 |
---|---|
Thread 동기화 객체 및 IPC의 선택 (0) | 2011.08.26 |
VC++ 코드 실행 시간 측정 방법 정리 (0) | 2009.11.19 |
APC(Asynchronous procedure call)에 대하여 (0) | 2009.10.29 |
Predefined Macros (0) | 2009.10.01 |
RECENT COMMENT