summaryrefslogtreecommitdiffstats
path: root/WebKitTools/gdb/wtf.py
diff options
context:
space:
mode:
Diffstat (limited to 'WebKitTools/gdb/wtf.py')
-rw-r--r--WebKitTools/gdb/wtf.py133
1 files changed, 0 insertions, 133 deletions
diff --git a/WebKitTools/gdb/wtf.py b/WebKitTools/gdb/wtf.py
deleted file mode 100644
index cf4b59b..0000000
--- a/WebKitTools/gdb/wtf.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# Copyright (C) 2010, Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""GDB support for WebKit WTF types.
-
-Add this to your gdb by amending your ~/.gdbinit as follows:
- python
- import sys
- sys.path.insert(0, "/path/to/tools/gdb/")
- import wtf
-
-See http://sourceware.org/gdb/current/onlinedocs/gdb/Python.html for GDB's
-Python API.
-"""
-
-import gdb
-import re
-
-
-class WTFVectorPrinter:
- """Pretty Printer for a WTF::Vector.
-
- The output of this pretty printer is similar to the output of std::vector's
- pretty printer, which is bundled in gcc.
-
- Example gdb session should look like:
- (gdb) p v
- $3 = WTF::Vector of length 7, capacity 16 = {7, 17, 27, 37, 47, 57, 67}
- (gdb) set print elements 3
- (gdb) p v
- $6 = WTF::Vector of length 7, capacity 16 = {7, 17, 27...}
- (gdb) set print array
- (gdb) p v
- $7 = WTF::Vector of length 7, capacity 16 = {
- 7,
- 17,
- 27
- ...
- }
- (gdb) set print elements 200
- (gdb) p v
- $8 = WTF::Vector of length 7, capacity 16 = {
- 7,
- 17,
- 27,
- 37,
- 47,
- 57,
- 67
- }
- """
-
- class Iterator:
- def __init__(self, start, finish):
- self.item = start
- self.finish = finish
- self.count = 0
-
- def __iter__(self):
- return self
-
- def next(self):
- if self.item == self.finish:
- raise StopIteration
- count = self.count
- self.count += 1
- element = self.item.dereference()
- self.item += 1
- return ('[%d]' % count, element)
-
- def __init__(self, val):
- self.val = val
-
- def children(self):
- start = self.val['m_buffer']['m_buffer']
- return self.Iterator(start, start + self.val['m_size'])
-
- def to_string(self):
- return ('%s of length %d, capacity %d'
- % ('WTF::Vector', self.val['m_size'], self.val['m_buffer']['m_capacity']))
-
- def display_hint(self):
- return 'array'
-
-
-def lookup_function(val):
- type = val.type
- if type.code == gdb.TYPE_CODE_REF:
- type = type.target()
- type = type.unqualified().strip_typedefs()
- typename = type.tag
- if not typename:
- return None
- for function, pretty_printer in pretty_printers_dict.items():
- if function.search(typename):
- return pretty_printer(val)
- return None
-
-
-def build_pretty_printers_dict():
- pretty_printers_dict[re.compile('^WTF::Vector<.*>$')] = WTFVectorPrinter
-
-
-pretty_printers_dict = {}
-
-build_pretty_printers_dict()
-
-gdb.pretty_printers.append(lookup_function)