Carven
Carven

Reputation: 15638

Printing output on the Output Window in Visual C++ IDE

How do I print on the output window in Visual C++? The project that I am working on isn't of a console window project type. That's when I build and run it, it doesn't open a console window. Instead, it opens a win32 application, which isn't built by me. I am just adding things to it.

I am pretty new to C++ and because I couldn't print variables out on any console, it makes it very hard for me to debug.

Since the Visual Studio 2010 project doesn't launch console when I build and run it, can I still print outputs such as variables and others on the Output window of the IDE?

Thanks for any help.

Upvotes: 4

Views: 35359

Answers (5)

oHo
oHo

Reputation: 54541

I have written a portable TRACE macro.
On MS-Windows, it is based on OutputDebugString as indicated by other answers.

Here I share my work:

#ifdef ENABLE_TRACE
#  ifdef _MSC_VER
#    include <windows.h>
#    include <sstream>
#    define TRACE(x)                           \
     do {  std::stringstream s;  s << (x);     \
           OutputDebugString(s.str().c_str()); \
        } while(0)
#  else
#    include <iostream>
#    define TRACE(x)  std::clog << (x)
#  endif        // or std::cerr << (x) << std::flush
#else
#  define TRACE(x)
#endif

example:

#define ENABLE_TRACE  //can depend on _DEBUG or NDEBUG macros
#include "my_above_trace_header.h"

int main (void)
{
   int     v1 = 123;
   double  v2 = 456.789;
   TRACE ("main() v1="<< v1 <<" v2="<< v2 <<'\n');
}

Please feel free to give any improvements/suggestions/contributions ;-)

Upvotes: 5

Miguel Grinberg
Miguel Grinberg

Reputation: 67479

Instead of printing to the Output window in VS as indicated by other answers, I prefer to create a console window in my GUI apps, then use regular printf or cout to write debugging info to it. This has the benefit that you can do it even when you run without the debugger.

See this site for a simple function that sets up a console.

Upvotes: 1

MartinStettner
MartinStettner

Reputation: 29164

You can use the Windows function OutputDebugString (see here) to send output to debuggers. These outputs are shown in the VS output window. You can also watch these outputs with external applications, e.g. DebugView.

Remember to remove these statements from your production code if you don't want other people to see these debug messages (which would otherwise be possible using tools like DebugView...)

Upvotes: 0

Darcara
Darcara

Reputation: 1608

You can use OutputDebugString("..."); to print to the Output window of Visual Studio. You have to #include <windows.h> though.

Upvotes: 7

FailedDev
FailedDev

Reputation: 26920

I have used this in the past, although not with a win32 application. You could give it a shot though :)

http://www.cplusplus.com/forum/lounge/17371/

Upvotes: 0

Related Questions