User ID:
Password:
Remember Me:
Forgot Password?
Not a member?
Click here for more information and to register.

    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;
    #endif
    
    // 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
    	AllocConsole();
    	SetConsoleTitle("Debug Window");
    	__hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
    
    	COORD co = {width,height};
    	SetConsoleScreenBufferSize(__hStdOut, co);
    
    	if(fname)
    		__fStdOut = fopen(fname, "w");
    #endif
    }
    
    // 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);
    	va_end(argptr);
    
    	DWORD cCharsWritten;
    
    	if(__hStdOut)
    		WriteConsole(__hStdOut, s, strlen(s), &cCharsWritten, NULL);
    
    	if(__fStdOut)
    		fprintf(__fStdOut, s);
    
    	return(cnt);
    #else
    	return 0;
    #endif
    }
    
    
    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.


    IT Offers


    Top Authors