summaryrefslogtreecommitdiff
path: root/examples/python/delta.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/python/delta.py')
-rwxr-xr-xexamples/python/delta.py134
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'