diff options
Diffstat (limited to 'examples/python/delta.py')
-rwxr-xr-x | examples/python/delta.py | 134 |
1 files changed, 0 insertions, 134 deletions
diff --git a/examples/python/delta.py b/examples/python/delta.py deleted file mode 100755 index 1b192aceb9da..000000000000 --- a/examples/python/delta.py +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/python - -#---------------------------------------------------------------------- -# This module will enable GDB remote packet logging when the -# 'start_gdb_log' command is called with a filename to log to. When the -# 'stop_gdb_log' command is called, it will disable the logging and -# print out statistics about how long commands took to execute and also -# will primnt ou -# Be sure to add the python path that points to the LLDB shared library. -# -# To use this in the embedded python interpreter using "lldb" just -# import it with the full path using the "command script import" -# command. This can be done from the LLDB command line: -# (lldb) command script import /path/to/gdbremote.py -# Or it can be added to your ~/.lldbinit file so this module is always -# available. -#---------------------------------------------------------------------- - -import commands -import optparse -import os -import shlex -import re -import tempfile - - -def start_gdb_log(debugger, command, result, dict): - '''Start logging GDB remote packets by enabling logging with timestamps and - thread safe logging. Follow a call to this function with a call to "stop_gdb_log" - in order to dump out the commands.''' - global log_file - if log_file: - result.PutCString( - 'error: logging is already in progress with file "%s"', - log_file) - else: - args_len = len(args) - if args_len == 0: - log_file = tempfile.mktemp() - elif len(args) == 1: - log_file = args[0] - - if log_file: - debugger.HandleCommand( - 'log enable --threadsafe --timestamp --file "%s" gdb-remote packets' % - log_file) - result.PutCString( - "GDB packet logging enable with log file '%s'\nUse the 'stop_gdb_log' command to stop logging and show packet statistics." % - log_file) - return - - result.PutCString('error: invalid log file path') - result.PutCString(usage) - - -def parse_time_log(debugger, command, result, dict): - # Any commands whose names might be followed by more valid C identifier - # characters must be listed here - command_args = shlex.split(command) - parse_time_log_args(command_args) - - -def parse_time_log_args(command_args): - usage = "usage: parse_time_log [options] [<LOGFILEPATH>]" - description = '''Parse a log file that contains timestamps and convert the timestamps to delta times between log lines.''' - parser = optparse.OptionParser( - description=description, - prog='parse_time_log', - usage=usage) - parser.add_option( - '-v', - '--verbose', - action='store_true', - dest='verbose', - help='display verbose debug info', - default=False) - try: - (options, args) = parser.parse_args(command_args) - except: - return - for log_file in args: - parse_log_file(log_file, options) - - -def parse_log_file(file, options): - '''Parse a log file that was contains timestamps. These logs are typically - generated using: - (lldb) log enable --threadsafe --timestamp --file <FILE> .... - - This log file will contain timestamps and this function will then normalize - those packets to be relative to the first value timestamp that is found and - show delta times between log lines and also keep track of how long it takes - for GDB remote commands to make a send/receive round trip. This can be - handy when trying to figure out why some operation in the debugger is taking - a long time during a preset set of debugger commands.''' - - print '#----------------------------------------------------------------------' - print "# Log file: '%s'" % file - print '#----------------------------------------------------------------------' - - timestamp_regex = re.compile('(\s*)([1-9][0-9]+\.[0-9]+)([^0-9].*)$') - - base_time = 0.0 - last_time = 0.0 - file = open(file) - lines = file.read().splitlines() - for line in lines: - match = timestamp_regex.match(line) - if match: - curr_time = float(match.group(2)) - delta = 0.0 - if base_time: - delta = curr_time - last_time - else: - base_time = curr_time - - print '%s%.6f %+.6f%s' % (match.group(1), curr_time - base_time, delta, match.group(3)) - last_time = curr_time - else: - print line - - -if __name__ == '__main__': - import sys - parse_time_log_args(sys.argv[1:]) - -else: - import lldb - if lldb.debugger: - # This initializer is being run from LLDB in the embedded command interpreter - # Add any commands contained in this module to LLDB - lldb.debugger.HandleCommand( - 'command script add -f delta.parse_time_log parse_time_log') - print 'The "parse_time_log" command is now installed and ready for use, type "parse_time_log --help" for more information' |