Custom Debug Monitor
Visual C++ Programming
By Daniel Chirca
Source Code: CustomDebug.zip 45 KB
Environment: Visual C++ 6 (SP3)
Many times I wanted to have an easy way to get the same functionality in Microsoft Visual C++ that Visual Basic provides, i.e. to insert into the source code some debug messages and have them displayed at runtime into a separated, dedicated window (...the "Immediate" window in Visual Basic).
I have checked the existing solutions/workarounds (like MsgTracer, TraceWindow, ...), but none seemed enough flexible and very easy to use. So, I have decided to implement my own solution.
I have created a small utility, named Debug.exe, which is a mainly a messaging monitor window, where all the debugging messages sent from your application are displayed at runtime.
In order to use this utility, you need to follow these easy steps:
- Add CDebug.cpp and CDebug.h to your Visual C++ project.
- Declare a global instance of the CDebug class:
CDebug Debug;
- Wherever you need in your source code to send (debug) messages, use one of the following functions:
Debug.printf0(/* message */)
Debug.printf1(/* message */)
Debug.printf2(/* message */)
Debug.printf3(/* message */)
- the last digit (0, 1, 2 or 3) means the level of the message (you can customize what levels you want to intercept in the Debug window).
- the syntax/arguments are the same as for the printf function... It will also accept a CString as first argument, in addition to LPTSTR and LPCTSTR.
- Run Debug.exe and customize, through "Options" how do you want to handle the arriving messages. (One nice idea might be to add the Debug.exe utility to the "Tools" IDE menu)
- Run your Visual C++ application.
Example Usage
//YourApp.cpp implementation file
#ifndef CDEBUG
#include "CDebug.h"
#endif
extern CDebug Debug;
//....your code...
//...A function that uses the Debug facility...
//At runtime, the Debug.exe utility should be running in order
//to catch these messages...
BOOL CWOA_GridCtrl::IsRunMode()
{
BOOL bIsRunMode;
bIsRunMode = AmbientUserMode();
Debug.Printf1("IsRunMode returns ", bIsRunMode);
return bIsRunMode;
}
|
About the Author: Daniel Chirca
|