|  | //===-- MIUtilDebug.h -------------------------------------------*- C++ -*-===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #pragma once | 
|  |  | 
|  | #define MI_USE_DEBUG_TRACE_FN // Undefine to compile out fn trace code | 
|  |  | 
|  | // In-house headers: | 
|  | #include "MIUtilString.h" | 
|  |  | 
|  | // Declarations: | 
|  | class CMICmnLog; | 
|  |  | 
|  | //++ | 
|  | //============================================================================ | 
|  | // Details: MI debugging aid utility class. | 
|  | //-- | 
|  | class CMIUtilDebug { | 
|  | // Statics: | 
|  | public: | 
|  | static void ShowDlgWaitForDbgAttach(); | 
|  | static void WaitForDbgAttachInfinteLoop(); | 
|  |  | 
|  | // Methods: | 
|  | public: | 
|  | /* ctor */ CMIUtilDebug(); | 
|  |  | 
|  | // Overrideable: | 
|  | public: | 
|  | // From CMICmnBase | 
|  | /* dtor */ virtual ~CMIUtilDebug(); | 
|  | }; | 
|  |  | 
|  | //++ | 
|  | //============================================================================ | 
|  | // Details: MI debug utility class. Used to indicate the current function | 
|  | //          depth in the call stack. It uses the CMIlCmnLog logger to output | 
|  | //          the current fn trace information. | 
|  | //          Use macro MI_TRACEFN( "Some fn name" ) and implement the scope of | 
|  | //          the functions you wish to build up a trace off. | 
|  | //          Use preprocessor definition MI_USE_DEBUG_TRACE_FN to turn off or on | 
|  | //          tracing code. | 
|  | //-- | 
|  | class CMIUtilDebugFnTrace { | 
|  | // Methods: | 
|  | public: | 
|  | /* ctor */ CMIUtilDebugFnTrace(const CMIUtilString &vFnName); | 
|  |  | 
|  | // Overrideable: | 
|  | public: | 
|  | // From CMICmnBase | 
|  | /* dtor */ virtual ~CMIUtilDebugFnTrace(); | 
|  |  | 
|  | // Attributes: | 
|  | private: | 
|  | const CMIUtilString m_strFnName; | 
|  |  | 
|  | static CMICmnLog &ms_rLog; | 
|  | static MIuint ms_fnDepthCnt; // Increment count as fn depth increases, | 
|  | // decrement count as fn stack pops off | 
|  | }; | 
|  |  | 
|  | //++ | 
|  | //============================================================================ | 
|  | // Details: Take the given text and send it to the server's Logger to output to | 
|  | // the | 
|  | //          trace file. | 
|  | // Type:    Compile preprocess. | 
|  | // Args:    x   - (R) Message (may be seen by user). | 
|  | //-- | 
|  | #ifdef MI_USE_DEBUG_TRACE_FN | 
|  | #define MI_TRACEFN(x) CMIUtilDebugFnTrace __MITrace(x) | 
|  | #else | 
|  | #define MI_TRACEFN(x) | 
|  | #endif // MI_USE_DEBUG_TRACE_FN |