summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-21 22:58:02 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-21 22:58:02 +0000
commit98436857ed2060699f43987cddf7b3664983bfeb (patch)
tree53fabf8cdfee6dd3a6538383a9e933883244e772 /tools
parent75cdad794f70fd60e0f8cec419f6ee4989e25b55 (diff)
downloadchromium_src-98436857ed2060699f43987cddf7b3664983bfeb.zip
chromium_src-98436857ed2060699f43987cddf7b3664983bfeb.tar.gz
chromium_src-98436857ed2060699f43987cddf7b3664983bfeb.tar.bz2
Delete obsolete gdb scripts. These have been moved to WebKit.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63444 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rw-r--r--tools/gdb/webkit.py171
1 files changed, 0 insertions, 171 deletions
diff --git a/tools/gdb/webkit.py b/tools/gdb/webkit.py
deleted file mode 100644
index 11dfd06..0000000
--- a/tools/gdb/webkit.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# Copyright (c) 2010 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.
-
-"""GDB support for WebKit types.
-
-Add this to your gdb by amending your ~/.gdbinit as follows:
- python
- import sys
- sys.path.insert(0, "/path/to/tools/gdb/")
- import webkit
-"""
-
-import gdb
-import struct
-
-def ustring_to_string(ptr, length=None):
- """Convert a pointer to UTF-16 data into a Python Unicode string.
-
- ptr and length are both gdb.Value objects.
- If length is unspecified, will guess at the length."""
- extra = ''
- if length is None:
- # Try to guess at the length.
- for i in xrange(0, 2048):
- if int((ptr + i).dereference()) == 0:
- length = i
- break
- if length is None:
- length = 256
- extra = u' (no trailing NUL found)'
- else:
- length = int(length)
-
- char_vals = [int((ptr + i).dereference()) for i in xrange(length)]
- string = struct.pack('H' * length, *char_vals).decode('utf-16', 'replace')
-
- return string + extra
-
-
-class StringPrinter(object):
- "Shared code between different string-printing classes"
- def __init__(self, val):
- self.val = val
-
- def display_hint(self):
- return 'string'
-
-
-class UCharStringPrinter(StringPrinter):
- "Print a UChar*; we must guess at the length"
- def to_string(self):
- return ustring_to_string(self.val)
-
-
-class WebCoreAtomicStringPrinter(StringPrinter):
- "Print a WebCore::AtomicString"
- def to_string(self):
- return self.val['m_string']
-
-
-class WebCoreStringPrinter(StringPrinter):
- "Print a WebCore::String"
- def get_length(self):
- if not self.val['m_impl']['m_ptr']:
- return 0
- return self.val['m_impl']['m_ptr']['m_length']
-
- def to_string(self):
- if self.get_length() == 0:
- return '(null)'
-
- return ustring_to_string(self.val['m_impl']['m_ptr']['m_data'],
- self.get_length())
-
-
-class WebCoreQualifiedNamePrinter(StringPrinter):
- "Print a WebCore::QualifiedName"
-
- def __init__(self, val):
- super(WebCoreQualifiedNamePrinter, self).__init__(val)
- self.prefix_length = 0
- self.length = 0
- if self.val['m_impl']:
- self.prefix_printer = WebCoreStringPrinter(
- self.val['m_impl']['m_prefix']['m_string'])
- self.local_name_printer = WebCoreStringPrinter(
- self.val['m_impl']['m_localName']['m_string'])
- self.prefix_length = self.prefix_printer.get_length()
- if self.prefix_length > 0:
- self.length = (self.prefix_length + 1 +
- self.local_name_printer.get_length())
- else:
- self.length = self.local_name_printer.get_length()
-
- def get_length(self):
- return self.length
-
- def to_string(self):
- if self.get_length() == 0:
- return "(null)"
- else:
- if self.prefix_length > 0:
- return (self.prefix_printer.to_string() + ":" +
- self.local_name_printer.to_string())
- else:
- return self.local_name_printer.to_string()
-
-
-
-def lookup_function(val):
- """Function used to load pretty printers; will be passed to GDB."""
- lookup_tag = val.type.tag
- printers = {
- "WebCore::AtomicString": WebCoreAtomicStringPrinter,
- "WebCore::String": WebCoreStringPrinter,
- "WebCore::QualifiedName": WebCoreQualifiedNamePrinter,
- }
- name = val.type.tag
- if name in printers:
- return printers[name](val)
-
- if val.type.code == gdb.TYPE_CODE_PTR:
- name = str(val.type.target().unqualified())
- if name == 'UChar':
- return UCharStringPrinter(val)
-
- return None
-
-
-gdb.pretty_printers.append(lookup_function)
-
-
-
-class PrintPathToRootCommand(gdb.Command):
- """Command for printing WebKit Node trees.
-Usage: printpathtoroot variable_name
-"""
-
- def __init__(self):
- super(PrintPathToRootCommand, self).__init__("printpathtoroot",
- gdb.COMMAND_SUPPORT,
- gdb.COMPLETE_NONE)
-
- def invoke(self, arg, from_tty):
- element_type = gdb.lookup_type('WebCore::Element')
- node_type = gdb.lookup_type('WebCore::Node')
- frame = gdb.selected_frame()
- try:
- val = gdb.Frame.read_var(frame, arg)
- except:
- print "No such variable, or invalid type"
- return
-
- target_type = str(val.type.target().strip_typedefs())
- if target_type == str(node_type):
- stack = []
- while val:
- stack.append([val,
- val.cast(element_type.pointer()).dereference()['m_tagName']])
- val = val.dereference()['m_parent']
-
- padding = ''
- while len(stack) > 0:
- pair = stack.pop()
- print padding, pair[1], pair[0]
- padding = padding + ' '
- else:
- print 'Sorry: I don\'t know how to deal with %s yet.' % target_type
-
-PrintPathToRootCommand()