Write debug output to console window

Environment: any MSVC

It's very common that we have to test our program on another machine where the Visual C++ IDE is not installed. So there will be no debug window for output. Logging into a file or keep popping up MessageBoxs are not very practical ways. An easy solution is to show the output strings in a console window.

Put the following code at the beginning of your app file or in a separate file.

#ifdef _DEBUG
    FILE* __fStdOut = NULL;
    HANDLE __hStdOut = NULL;

// width and height is the size of console window, if you specify fname, 
// the output will also be writton to this file. The file pointer is automatically closed 
// when you close the app
void startConsoleWin(int width=80, int height=25, char* fname = NULL);

void startConsoleWin(int width, int height, char* fname)
#ifdef _DEBUG
	SetConsoleTitle("Debug Window");
	__hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);

	COORD co = {width,height};
	SetConsoleScreenBufferSize(__hStdOut, co);

		__fStdOut = fopen(fname, "w");

// Use wprintf like TRACE0, TRACE1, ... (The arguments are the same as printf)
int wprintf(char *fmt, ...)
#ifdef _DEBUG
	char s[300];
	va_list argptr;
	int cnt;

	va_start(argptr, fmt);
	cnt = vsprintf(s, fmt, argptr);

	DWORD cCharsWritten;

		WriteConsole(__hStdOut, s, strlen(s), &cCharsWritten, NULL);

		fprintf(__fStdOut, s);

	return 0;

In CWinApp::InitInstance() call startConsoleWin() and a console window will popup. Then use wprintf at places where you used to use TRACE. The output strings will then appear in the console window.


  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Anthony Christie, the Chief Marketing Officer for Level Communications, is responsible for customer experience, worldwide marketing and product management. In this informative asset, he shares his insights into why a private network connection to cloud-bases applications is the right decision for your enterprise. Download now to find out more.

  • Moving from an on-premises environment to Office 365 does not remove the need to plan for disruptions or reduce the business risk requirements for protecting email services. If anything, some risks increase with a move to the cloud. Read how to ease the transition every business faces if considering or already migrating to cloud email. This white paper discusses: Setting expectations when migrating to Office 365 Understanding the implications of relying solely on Exchange Online security Necessary archiving …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date