aboutsummaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MIUtilDebug.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-mi/MIUtilDebug.cpp')
-rw-r--r--tools/lldb-mi/MIUtilDebug.cpp128
1 files changed, 128 insertions, 0 deletions
diff --git a/tools/lldb-mi/MIUtilDebug.cpp b/tools/lldb-mi/MIUtilDebug.cpp
new file mode 100644
index 000000000000..754920880ec4
--- /dev/null
+++ b/tools/lldb-mi/MIUtilDebug.cpp
@@ -0,0 +1,128 @@
+//===-- MIUtilDebug.cpp -----------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+//++
+// File: MIUtilDebug.h
+//
+// Overview: Terminal setting termios functions.
+//
+// Environment: Compilers: Visual C++ 12.
+// gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
+// Libraries: See MIReadmetxt.
+//
+// Copyright: None.
+//--
+
+// Third party headers:
+#ifdef _WIN32
+#include <Windows.h>
+#endif
+
+// In-house headers:
+#include "MIUtilDebug.h"
+#include "MIDriver.h"
+#include "MICmnLog.h"
+
+//++ ------------------------------------------------------------------------------------
+// Details: CMIUtilDebug constructor.
+// Type: Method.
+// Args: None.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilDebug::CMIUtilDebug( void )
+{
+}
+
+//++ ------------------------------------------------------------------------------------
+// Details: CMIUtilDebug destructor.
+// Type: Method.
+// Args: None.
+// Return: None.
+// Throws: None.
+//--
+CMIUtilDebug::~CMIUtilDebug( void )
+{
+}
+
+//++ ------------------------------------------------------------------------------------
+// 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( void )
+{
+ 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( void )
+{
+ 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( void )
+{
+ const CMIUtilString txt( CMIUtilString::Format( "%d<%s", ms_fnDepthCnt--, m_strFnName.c_str() ) );
+ ms_rLog.Write( txt, CMICmnLog::eLogVerbosity_FnTrace );
+}
+