diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-01-06 20:12:03 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-01-06 20:12:03 +0000 |
commit | 9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc (patch) | |
tree | dd2a1ddf0476664c2b823409c36cbccd52662ca7 /scripts/utilsDebug.py | |
parent | 3bd2e91faeb9eeec1aae82c64a3253afff551cfd (diff) | |
download | src-503acc3a0a1fd9a610f1a126b8608cb84b185170.tar.gz src-503acc3a0a1fd9a610f1a126b8608cb84b185170.zip |
Vendor import of lldb trunk r256945:vendor/lldb/lldb-trunk-r256945
Diffstat (limited to 'scripts/utilsDebug.py')
-rw-r--r-- | scripts/utilsDebug.py | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/scripts/utilsDebug.py b/scripts/utilsDebug.py new file mode 100644 index 000000000000..4b5eb7fa3e70 --- /dev/null +++ b/scripts/utilsDebug.py @@ -0,0 +1,120 @@ +""" Utility module to help debug Python scripts + + -------------------------------------------------------------------------- + File: utilsDebug.py + + Overview: Python module to supply functions to help debug Python + scripts. + Gotchas: None. + Copyright: None. + -------------------------------------------------------------------------- +""" + +# Python modules: +import sys + +# 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(object): + # 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 + sys.stdout.write("%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) + + #++------------------------------------------------------------------------ + # 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 = "" |