This is the mail archive of the
mailing list for the Cygwin project.
Re: Windows TRACE message
kenneth Brubaker has released something similar to your
"debugout" class, and he outlined it in the May 1999 issue
of _C++ Report_.
The source is available as two listings; the source is at:
It's by no means perfect, but it provides printf()-style
functions (called dprintf()) and IO-streams classes
(through the `dout' class) that send output to the
Windows' OutputDebugStream API, which can be captured with
the sysinternals' program previously mentioned on the list.
The original code, unfortunately, is rather MSVC-specific,
as it requires the newer template-based IO-streams library,
plus the requirement of the OutputDebugString API.
However, I've been hacking on the source to allow
redirection to stdout/stderr (or any other FILE*), and it
currently works on Linux without too many problems. I'll
probably put the source out after I deal with some
multi-threading initialization issues (which consist of
a total lack of threading support).
----- Original Message -----
From: Mumit Khan <firstname.lastname@example.org.EDU>
Sent: Friday, July 09, 1999 2:47 AM
Subject: Re: Windows TRACE message
> "Lars Gregersen" <email@example.com> writes:
> > I prefer to use the API function OutputDebugString. It isn't as
> > powerful as the printf type of commands, but it sends a string to a
> > seperate debug window. This also has the great effect that I'f you're
> > testing multiple programmes at the same time you get the output in
> > order in the same window. It works for GUI and console programmes.
> > You can get a debug string viewer (for free) at www.sysinternals.com
> Thanks for the very useful pointer.
> I tend to use a debugging stream (most of my code is C++) that has
> a subclass for win32 that opens a scrolled window and just dumps
> everything there. Very simple, and you can use iostream style
> debugout << __FILE__ << ": " __LINE << ": "
> << "error message here ...." << endl;
> The default class simply dumps to cerr.
> One of these days I'll clean up the copyright and release it. it's
> part of a commercial package, but since I own it, I can probably
> convince our commercial arm to make it freely available.
> The trick is to make sure that the global constructor for the
> debug stream is initialized before anything else, but right
> after iostreams is initialized.
> Want to unsubscribe from this list?
> Send a message to firstname.lastname@example.org
Want to unsubscribe from this list?
Send a message to email@example.com