120 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===-- MIUtilDebug.cpp -----------------------------------------*- C++ -*-===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| // Third party headers:
 | |
| #ifdef _WIN32
 | |
| #include <windows.h>
 | |
| #endif
 | |
| 
 | |
| // In-house headers:
 | |
| #include "MICmnLog.h"
 | |
| #include "MIDriver.h"
 | |
| #include "MIUtilDebug.h"
 | |
| 
 | |
| //++
 | |
| //------------------------------------------------------------------------------------
 | |
| // Details: CMIUtilDebug constructor.
 | |
| // Type:    Method.
 | |
| // Args:    None.
 | |
| // Return:  None.
 | |
| // Throws:  None.
 | |
| //--
 | |
| CMIUtilDebug::CMIUtilDebug() {}
 | |
| 
 | |
| //++
 | |
| //------------------------------------------------------------------------------------
 | |
| // Details: CMIUtilDebug destructor.
 | |
| // Type:    Method.
 | |
| // Args:    None.
 | |
| // Return:  None.
 | |
| // Throws:  None.
 | |
| //--
 | |
| CMIUtilDebug::~CMIUtilDebug() {}
 | |
| 
 | |
| //++
 | |
| //------------------------------------------------------------------------------------
 | |
| // Details: Show a dialog to the process/application halts. It gives the
 | |
| // opportunity to
 | |
| //          attach a debugger.
 | |
| // Type:    Static method.
 | |
| // Args:    None.
 | |
| // Return:  None.
 | |
| // Throws:  None.
 | |
| //--
 | |
| void CMIUtilDebug::ShowDlgWaitForDbgAttach() {
 | |
|   const CMIUtilString strCaption(CMIDriver::Instance().GetAppNameShort());
 | |
| #ifdef _WIN32
 | |
|   ::MessageBoxA(NULL, "Attach your debugger now", strCaption.c_str(), MB_OK);
 | |
| #else
 | |
| // ToDo: Implement other platform version of an Ok to continue dialog box
 | |
| #endif // _WIN32
 | |
| }
 | |
| 
 | |
| //++
 | |
| //------------------------------------------------------------------------------------
 | |
| // Details: Temporarily stall the process/application to give the programmer the
 | |
| //          opportunity to attach a debugger. How to use: Put a break in the
 | |
| //          programmer
 | |
| //          where you want to visit, run the application then attach your
 | |
| //          debugger to the
 | |
| //          application. Hit the debugger's pause button and the debugger should
 | |
| //          should
 | |
| //          show this loop. Change the i variable value to break out of the loop
 | |
| //          and
 | |
| //          visit your break point.
 | |
| // Type:    Static method.
 | |
| // Args:    None.
 | |
| // Return:  None.
 | |
| // Throws:  None.
 | |
| //--
 | |
| void CMIUtilDebug::WaitForDbgAttachInfinteLoop() {
 | |
|   MIuint i = 0;
 | |
|   while (i == 0) {
 | |
|     const std::chrono::milliseconds time(100);
 | |
|     std::this_thread::sleep_for(time);
 | |
|   }
 | |
| }
 | |
| 
 | |
| //---------------------------------------------------------------------------------------
 | |
| //---------------------------------------------------------------------------------------
 | |
| //---------------------------------------------------------------------------------------
 | |
| 
 | |
| // Instantiations:
 | |
| CMICmnLog &CMIUtilDebugFnTrace::ms_rLog = CMICmnLog::Instance();
 | |
| MIuint CMIUtilDebugFnTrace::ms_fnDepthCnt = 0;
 | |
| 
 | |
| //++
 | |
| //------------------------------------------------------------------------------------
 | |
| // Details: CMIUtilDebugFnTrace constructor.
 | |
| // Type:    Method.
 | |
| // Args:    vFnName - (R) The text to insert into the log.
 | |
| // Return:  None.
 | |
| // Throws:  None.
 | |
| //--
 | |
| CMIUtilDebugFnTrace::CMIUtilDebugFnTrace(const CMIUtilString &vFnName)
 | |
|     : m_strFnName(vFnName) {
 | |
|   const CMIUtilString txt(
 | |
|       CMIUtilString::Format("%d>%s", ++ms_fnDepthCnt, m_strFnName.c_str()));
 | |
|   ms_rLog.Write(txt, CMICmnLog::eLogVerbosity_FnTrace);
 | |
| }
 | |
| 
 | |
| //++
 | |
| //------------------------------------------------------------------------------------
 | |
| // Details: CMIUtilDebugFnTrace destructor.
 | |
| // Type:    Method.
 | |
| // Args:    None.
 | |
| // Return:  None.
 | |
| // Throws:  None.
 | |
| //--
 | |
| CMIUtilDebugFnTrace::~CMIUtilDebugFnTrace() {
 | |
|   const CMIUtilString txt(
 | |
|       CMIUtilString::Format("%d<%s", ms_fnDepthCnt--, m_strFnName.c_str()));
 | |
|   ms_rLog.Write(txt, CMICmnLog::eLogVerbosity_FnTrace);
 | |
| }
 |