| Index: tools/telemetry/telemetry/exception_formatter.py
|
| diff --git a/tools/telemetry/telemetry/exception_formatter.py b/tools/telemetry/telemetry/exception_formatter.py
|
| deleted file mode 100644
|
| index 8dafd44c2dae41923e6e446c2d92572b1b338323..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/telemetry/exception_formatter.py
|
| +++ /dev/null
|
| @@ -1,82 +0,0 @@
|
| -# Copyright 2013 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Print prettier and more detailed exceptions."""
|
| -
|
| -import math
|
| -import os
|
| -import sys
|
| -import traceback
|
| -
|
| -from telemetry.core import util
|
| -
|
| -
|
| -def InstallUnhandledExceptionFormatter():
|
| - sys.excepthook = PrintFormattedException
|
| -
|
| -
|
| -def PrintFormattedException(exception_class, exception, tb):
|
| - """Prints an Exception in a more useful format than the default.
|
| -
|
| - TODO(tonyg): Consider further enhancements. For instance:
|
| - - Report stacks to maintainers like depot_tools does.
|
| - - Add a debug flag to automatically start pdb upon exception.
|
| - """
|
| - def _GetFinalFrame(frame):
|
| - final_frame = None
|
| - while frame is not None:
|
| - final_frame = frame
|
| - frame = frame.tb_next
|
| - return final_frame
|
| -
|
| - def _AbbreviateMiddle(target, middle, length):
|
| - assert length >= 0, 'Must provide positive length'
|
| - assert len(middle) <= length, 'middle must not be greater than length'
|
| - if len(target) <= length:
|
| - return target
|
| - half_length = (length - len(middle)) / 2.
|
| - return '%s%s%s' % (target[:int(math.floor(half_length))],
|
| - middle,
|
| - target[-int(math.ceil(half_length)):])
|
| -
|
| - base_dir = os.path.abspath(util.GetChromiumSrcDir())
|
| - formatted_exception = traceback.format_exception(
|
| - exception_class, exception, tb)
|
| - extracted_tb = traceback.extract_tb(tb)
|
| - traceback_header = formatted_exception[0].strip()
|
| - exception = ''.join([l[2:] if l[:2] == ' ' else l for l in
|
| - traceback.format_exception_only(exception_class,
|
| - exception)])
|
| - local_variables = [(variable, value) for variable, value in
|
| - _GetFinalFrame(tb).tb_frame.f_locals.iteritems()
|
| - if variable != 'self']
|
| -
|
| - # Format the traceback.
|
| - print >> sys.stderr
|
| - print >> sys.stderr, traceback_header
|
| - for filename, line, function, text in extracted_tb:
|
| - filename = os.path.abspath(filename)
|
| - if filename.startswith(base_dir):
|
| - filename = filename[len(base_dir)+1:]
|
| - print >> sys.stderr, ' %s at %s:%d' % (function, filename, line)
|
| - print >> sys.stderr, ' %s' % text
|
| -
|
| - # Format the locals.
|
| - if local_variables:
|
| - print >> sys.stderr
|
| - print >> sys.stderr, 'Locals:'
|
| - longest_variable = max([len(v) for v, _ in local_variables])
|
| - for variable, value in sorted(local_variables):
|
| - value = repr(value)
|
| - possibly_truncated_value = _AbbreviateMiddle(value, ' ... ', 1024)
|
| - truncation_indication = ''
|
| - if len(possibly_truncated_value) != len(value):
|
| - truncation_indication = ' (truncated)'
|
| - print >> sys.stderr, ' %s: %s%s' % (variable.ljust(longest_variable + 1),
|
| - possibly_truncated_value,
|
| - truncation_indication)
|
| -
|
| - # Format the exception.
|
| - print >> sys.stderr
|
| - print >> sys.stderr, exception
|
|
|