본문 바로가기
프로그래밍/C++

Windows 프로그래밍 시 OutputDebugString 사용해 디버깅 정보 출력하기 + 가변인자 받아서 디버깅 정보 출력

by eteo 2023. 9. 21.

 

 

OutputDebugString은 Windows 프로그래밍 환경에서 디버깅 세션에 디버깅 정보를 출력하는데 사용되는 함수이다.

 

 

 

이 함수는 프로젝트 문자집합 설정이 멀티바이트냐 유니코드냐에 따라 OutputDebugStringW 또는 OutputDebugStringA로 정의된다.

 

#ifdef UNICODE
#define OutputDebugString  OutputDebugStringW
#else
#define OutputDebugString  OutputDebugStringA
#endif // !UNICODE

 

 

 

먼저 Windows.h 를 포함하고 OutputDebugString 함수를 호출해 디버깅 세션에 출력할 문자열을 넘긴다.

 

ANSI 문자열을 사용하는 경우 그냥 출력하면 되고 유니코드 문자열을 출력할 땐 문자열 앞에 L 접두사를 붙이면 된다.

 

#include <Windows.h>

int main(void)
{
	OutputDebugString("Debug information!!!\n");

	return 0;
}

 

 

 

 

 

 

가변인자 받아서 출력하기

 

#include <Windows.h>
#include <cstdarg>
#include <cstdio>

void myDebugMsg(const char* format, ...)
{
#ifdef _DEBUG
	char str[128];
	va_list args;
	va_start(args, format);
	vsprintf(str, format, args);
	OutputDebugString(str);
	va_end(args);
#endif
}

int main(void)
{
	OutputDebugString("Debug information!!!\n");
	myDebugMsg("Hello %d %s\n", 5000, "world!");

	return 0;
}

 

 

 

 

 

Visual Studio 디버그 출력창에 출력된 것을 볼 수 있다.

 

Release 모드로 빌드한 경우에는 OutputDebugString에 의한 출력이 무시된다.