OutputDebugStringW95 removed - it's really unnecessary - and the references to

DBWIN32 in the docs replaced with DbgView


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4520 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 1999-11-12 15:15:14 +00:00
parent 837e96fc55
commit de6019fb15
6 changed files with 7 additions and 164 deletions

View File

@ -727,7 +727,8 @@ See the \helpref{debugging overview}{debuggingoverview} for further information.
\subsection{Check Windows debug messages}
Under Windows, it's worth running your program with DBWIN running or
Under Windows, it's worth running your program with DbgView (available from
{\tt http://www.sysinternals.com} running or
some other program that shows Windows-generated debug messages. It's
possible it'll show invalid handles being used. You may have fun seeing
what commercial programs cause these normally hidden errors! Microsoft

View File

@ -1022,6 +1022,8 @@ See also \helpref{wxDDEServer}{wxddeserver}, \helpref{wxDDEClient}{wxddeclient},
\func{void}{wxDebugMsg}{\param{const wxString\& }{fmt}, \param{...}{}}
{\bf This function is deprecated, use \helpref{wxLogDebug}{wxlogoverview} instead!}
Display a debugging message; under Windows, this will appear on the
debugger command window, and under Unix, it will be written to standard
error.
@ -1029,10 +1031,6 @@ error.
The syntax is identical to {\bf printf}: pass a format string and a
variable list of arguments.
Note that under Windows, you can see the debugging messages without a
debugger if you have the DBWIN debug log application that comes with
Microsoft C++.
{\bf Tip:} under Windows, if your application crashes before the
message appears in the debugging window, put a wxYield call after
each wxDebugMsg call. wxDebugMsg seems to be broken under WIN32s

View File

@ -44,6 +44,9 @@ first argument.
\item{\bf wxLogDebug} is {\bf the} right function for debug output. It only
does anything at all in the debug mode (when the preprocessor symbol
\_\_WXDEBUG\_\_ is defined) and expands to nothing in release mode (otherwise).
{\bf Tip:} under Windows, you must either run the program under debugger or
use a 3rd party program such as DbgView (from
{\tt http://www.sysinternals.com}) to actually see the debug output.
\item{\bf wxLogTrace} as {\bf wxLogDebug} only does something in debug
build. The reason for making it a separate function from it is that usually
there are a lot of trace messages, so it might make sense to separate them

View File

@ -196,22 +196,6 @@ extern LONG APIENTRY _EXPORT
#define ENDSESSION_LOGOFF 0x80000000
#endif
// ---------------------------------------------------------------------------
// debug messages
// ---------------------------------------------------------------------------
#if defined(__WIN95__) && defined(__WXDEBUG__) && wxUSE_DBWIN32
#ifndef __TWIN32__
#ifdef OutputDebugString
#undef OutputDebugString
#endif
#define OutputDebugString OutputDebugStringW95
#endif // __TWIN32__
extern void OutputDebugStringW95(const wxChar*, ...);
#endif // USE_DBWIN32
// ---------------------------------------------------------------------------
// useful macros and functions
// ---------------------------------------------------------------------------

View File

@ -332,9 +332,6 @@
#define wxUSE_NATIVE_STATUSBAR 1
// Set to 0 to use cross-platform wxStatusBar
#define wxUSE_DBWIN32 1
// Use Andrew Tucker's OutputDebugString implementation
// (required on Win95 only). See utils.cpp.
/*
* Any platform
@ -382,9 +379,6 @@
#undef wxUSE_THREADS
#define wxUSE_THREADS 0
#undef wxUSE_DBWIN32
#define wxUSE_DBWIN32 0
#undef wxUSE_OWNER_DRAWN
#define wxUSE_OWNER_DRAWN 0
#endif
@ -394,9 +388,6 @@
#undef wxUSE_THREADS
#define wxUSE_THREADS 0
#undef wxUSE_DBWIN32
#define wxUSE_DBWIN32 0
#undef wxUSE_ODBC
#define wxUSE_ODBC 0

View File

@ -1064,140 +1064,6 @@ bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special )
#endif
#if defined(__WIN95__) && defined(__WXDEBUG__) && wxUSE_DBWIN32
/*
When I started programming with Visual C++ v4.0, I missed one of my favorite
tools -- DBWIN. Finding the code for a simple debug trace utility, DBMON,
on MSDN was a step in the right direction, but it is a console application
and thus has limited features and extensibility. DBWIN32 is my creation
to solve this problem.
The code is essentially a merging of a stripped down version of the DBWIN code
from VC 1.5 and DBMON.C with a few 32 bit changes.
As of version 1.2B, DBWIN32 supports both Win95 and NT. The NT support is
built into the operating system and works just by running DBWIN32. The Win95
team decided not to support this hook, so I have provided code that will do
this for you. See the file WIN95.TXT for instructions on installing this.
If you have questions, problems or suggestions about DBWIN32, I welcome your
feedback and plan to actively maintain the code.
Andrew Tucker
ast@halcyon.com
To download dbwin32, see e.g.:
http://ftp.digital.com/pub/micro/NT/WinSite/programr/dbwin32.zip
*/
#if !defined(__MWERKS__) && !defined(__SALFORDC__) && !defined(__TWIN32__)
#include <process.h>
#endif
void OutputDebugStringW95(const wxChar* lpOutputString, ...)
{
HANDLE heventDBWIN; /* DBWIN32 synchronization object */
HANDLE heventData; /* data passing synch object */
HANDLE hSharedFile; /* memory mapped file shared data */
LPSTR lpszSharedMem;
wxChar achBuffer[500];
/* create the output buffer */
va_list args;
va_start(args, lpOutputString);
wxVsprintf(achBuffer, lpOutputString, args);
va_end(args);
/*
Do a regular OutputDebugString so that the output is
still seen in the debugger window if it exists.
This ifdef is necessary to avoid infinite recursion
from the inclusion of W95TRACE.H
*/
#ifdef _UNICODE
::OutputDebugStringW(achBuffer);
#else
#ifdef __TWIN32__
::OutputDebugString(achBuffer);
#else
::OutputDebugStringA(achBuffer);
#endif
#endif
/* bail if it's not Win95 */
{
OSVERSIONINFO VerInfo;
VerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&VerInfo);
if ( VerInfo.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS )
return;
}
/* make sure DBWIN is open and waiting */
heventDBWIN = OpenEvent(EVENT_MODIFY_STATE, FALSE, wxT("DBWIN_BUFFER_READY"));
if ( !heventDBWIN )
{
//MessageBox(NULL, wxT("DBWIN_BUFFER_READY nonexistent"), NULL, MB_OK);
return;
}
/* get a handle to the data synch object */
heventData = OpenEvent(EVENT_MODIFY_STATE, FALSE, wxT("DBWIN_DATA_READY"));
if ( !heventData )
{
// MessageBox(NULL, wxT("DBWIN_DATA_READY nonexistent"), NULL, MB_OK);
CloseHandle(heventDBWIN);
return;
}
hSharedFile = CreateFileMapping((HANDLE)-1, NULL, PAGE_READWRITE, 0, 4096, wxT("DBWIN_BUFFER"));
if (!hSharedFile)
{
//MessageBox(NULL, wxT("DebugTrace: Unable to create file mapping object DBWIN_BUFFER"), wxT("Error"), MB_OK);
CloseHandle(heventDBWIN);
CloseHandle(heventData);
return;
}
lpszSharedMem = (LPSTR)MapViewOfFile(hSharedFile, FILE_MAP_WRITE, 0, 0, 512);
if (!lpszSharedMem)
{
//MessageBox(NULL, wxT("DebugTrace: Unable to map shared memory"), wxT("Error"), MB_OK);
CloseHandle(heventDBWIN);
CloseHandle(heventData);
return;
}
/* wait for buffer event */
WaitForSingleObject(heventDBWIN, INFINITE);
/* write it to the shared memory */
#if defined( __BORLANDC__ ) || defined( __MWERKS__ ) || defined(__SALFORDC__)
*((LPDWORD)lpszSharedMem) = getpid();
#else
*((LPDWORD)lpszSharedMem) = _getpid();
#endif
wsprintf((LPTSTR)(lpszSharedMem + sizeof(DWORD)), wxT("%s"), achBuffer);
/* signal data ready event */
SetEvent(heventData);
/* clean up handles */
CloseHandle(hSharedFile);
CloseHandle(heventData);
CloseHandle(heventDBWIN);
return;
}
#endif
#if 0
// maximum mumber of lines the output console should have