diff options
Diffstat (limited to 'lldb/scripts/utilsDebug.py')
-rw-r--r-- | lldb/scripts/utilsDebug.py | 133 |
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 |