summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/utilsDebug.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/scripts/utilsDebug.py')
-rw-r--r--lldb/scripts/utilsDebug.py133
1 files changed, 133 insertions, 0 deletions
diff --git a/lldb/scripts/utilsDebug.py b/lldb/scripts/utilsDebug.py
new file mode 100644
index 00000000000..bf5410aee5e
--- /dev/null
+++ b/lldb/scripts/utilsDebug.py
@@ -0,0 +1,133 @@
+""" Utility module to help debug Python scripts
+
+ --------------------------------------------------------------------------
+ File: utilsDebug.py
+
+ Overview: Python module to supply functions to help debug Python
+ scripts.
+
+ Environment: OS: Windows/LINUX/OSX
+ IDE: Visual Studio 2013 Plugin Python Tools (PTVS)
+ Script: Python 2.6 x64
+
+ Gotchas: None.
+
+ Copyright: None.
+ --------------------------------------------------------------------------
+
+"""
+
+# Python modules:
+
+# Third party modules:
+
+# In-house modules:
+
+# Instantiations:
+
+#-----------------------------------------------------------------------------
+# Details: Class to implement simple stack function trace. Instantiation the
+# class as the first function you want to trace. Example:
+# obj = utilsDebug.CDebugFnVerbose( "validate_arguments()" );
+# Gotchas: This class will not work in properly in a multi-threaded
+# environment.
+# Authors: Illya Rudkin 28/11/2013.
+# Changes: None.
+#--
+class CDebugFnVerbose:
+ # Public static properties:
+ bVerboseOn = False; # True = turn on function tracing, False = turn off.
+
+ # Public:
+ #++------------------------------------------------------------------------
+ # Details: CDebugFnVerbose constructor.
+ # Type: Method.
+ # Args: vstrFnName - (R) Text description i.e. a function name.
+ # Return: None.
+ # Throws: None.
+ #--
+ # CDebugFnVerbose( vstrFnName )
+
+ #++------------------------------------------------------------------------
+ # Details: Print out information on the object specified.
+ # Type: Method.
+ # Args: vstrText - (R) Some helper text description.
+ # vObject - (R) Some Python type object.
+ # Return: None.
+ # Throws: None.
+ #--
+ def dump_object( self, vstrText, vObject ):
+ if CDebugFnVerbose.bVerboseOn == False:
+ return;
+ print "%d%s> Dp: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
+ vstrText),;
+ print vObject;
+
+ #++------------------------------------------------------------------------
+ # Details: Print out some progress text given by the client.
+ # Type: Method.
+ # Args: vstrText - (R) Some helper text description.
+ # Return: None.
+ # Throws: None.
+ #--
+ def dump_text( self, vstrText ):
+ if CDebugFnVerbose.bVerboseOn == False:
+ return;
+ print "%d%s> Dp: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
+ vstrText);
+
+ # Private methods:
+ def __init__( self, vstrFnName ):
+ self.__indent_out( vstrFnName );
+
+ # Class destructor
+ def __del__( self ):
+ self.__indent_back();
+
+ #++------------------------------------------------------------------------
+ # Details: Build an indentation string of dots based on the __nLevel.
+ # Type: Method.
+ # Args: None.
+ # Return: Str - variable length string.
+ # Throws: None.
+ #--
+ def __get_dots( self ):
+ return "".join( "." for i in range( 0, CDebugFnVerbose.__nLevel ) );
+
+ #++------------------------------------------------------------------------
+ # Details: Build and print out debug verbosity text indicating the function
+ # just exited from.
+ # Type: Method.
+ # Args: None.
+ # Return: None.
+ # Throws: None.
+ #--
+ def __indent_back( self ):
+ if CDebugFnVerbose.bVerboseOn:
+ print "%d%s< fn: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
+ self.__strFnName);
+ CDebugFnVerbose.__nLevel -= 1;
+
+ #++------------------------------------------------------------------------
+ # Details: Build and print out debug verbosity text indicating the function
+ # just entered.
+ # Type: Method.
+ # Args: vstrFnName - (R) Name of the function entered.
+ # Return: None.
+ # Throws: None.
+ #--
+ def __indent_out( self, vstrFnName ):
+ CDebugFnVerbose.__nLevel += 1;
+ self.__strFnName = vstrFnName;
+ if CDebugFnVerbose.bVerboseOn:
+ print "%d%s> fn: %s" % ( CDebugFnVerbose.__nLevel, self.__get_dots(),
+ self.__strFnName);
+
+ # Private statics attributes:
+ __nLevel = 0; # Indentation level counter
+
+ # Private attributes:
+ __strFnName = "";
+
+
+ \ No newline at end of file
OpenPOWER on IntegriCloud