Visual C++ Custom Debug Monitor | CodeGuru

Visual C++ Custom Debug Monitor

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 […]

Written By
CodeGuru Staff
CodeGuru Staff
May 4, 2000
2 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More


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. (You can download the full source code here)

In order to use this utility, you need to follow these easy steps:

  1. Add CDebug.cpp and CDebug.h to your Visual C++ project.
  2. Declare a global instance of the CDebug class:
  3. CDebug Debug;
    
  4. Wherever you need in your source code to send (debug) messages, use one of
    the following functions:
  5. 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.

  6. 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)
  7. 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;
}

Downloads


Download source – 45 Kb

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.