summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Tools/gdb/webkit.py
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Tools/gdb/webkit.py')
-rw-r--r--chromium/third_party/WebKit/Tools/gdb/webkit.py51
1 files changed, 41 insertions, 10 deletions
diff --git a/chromium/third_party/WebKit/Tools/gdb/webkit.py b/chromium/third_party/WebKit/Tools/gdb/webkit.py
index 97c31036264..ef4680327d9 100644
--- a/chromium/third_party/WebKit/Tools/gdb/webkit.py
+++ b/chromium/third_party/WebKit/Tools/gdb/webkit.py
@@ -35,18 +35,19 @@ Add this to your gdb by amending your ~/.gdbinit as follows:
import webkit
"""
+from __future__ import print_function
+
import gdb
import re
import struct
-
def guess_string_length(ptr):
"""Guess length of string pointed by ptr.
Returns a tuple of (length, an error message).
"""
# Try to guess at the length.
- for i in xrange(0, 2048):
+ for i in range(0, 2048):
try:
if int((ptr + i).dereference()) == 0:
return i, ''
@@ -66,7 +67,7 @@ def ustring_to_string(ptr, length=None):
length, error_message = guess_string_length(ptr)
else:
length = int(length)
- char_vals = [int((ptr + i).dereference()) for i in xrange(length)]
+ char_vals = [int((ptr + i).dereference()) for i in range(length)]
string = struct.pack('H' * length, *char_vals).decode('utf-16', 'replace').encode('utf-8')
return string + error_message
@@ -81,7 +82,7 @@ def lstring_to_string(ptr, length=None):
length, error_message = guess_string_length(ptr)
else:
length = int(length)
- string = ''.join([chr((ptr + i).dereference()) for i in xrange(length)])
+ string = ''.join([chr((ptr + i).dereference()) for i in range(length)])
return string + error_message
@@ -118,7 +119,7 @@ class WTFCStringPrinter(StringPrinter):
# The CString holds a buffer, which is a refptr to a WTF::CStringBuffer.
data = self.val['m_buffer']['m_ptr']['m_data'].cast(gdb.lookup_type('char').pointer())
length = self.val['m_buffer']['m_ptr']['m_length']
- return ''.join([chr((data + i).dereference()) for i in xrange(length)])
+ return ''.join([chr((data + i).dereference()) for i in range(length)])
class WTFStringImplPrinter(StringPrinter):
@@ -176,6 +177,33 @@ class WebCoreKURLPrinter(StringPrinter):
return WTFStringPrinter(self.val['m_string']).to_string()
+class WebCoreLayoutUnitPrinter:
+ "Print a WebCore::LayoutUnit"
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ return "%gpx" % (self.val['m_value'] / 64.0)
+
+
+class WebCoreLayoutSizePrinter:
+ "Print a WebCore::LayoutSize"
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ return 'LayoutSize(%s, %s)' % (WebCoreLayoutUnitPrinter(self.val['m_width']).to_string(), WebCoreLayoutUnitPrinter(self.val['m_height']).to_string())
+
+
+class WebCoreLayoutPointPrinter:
+ "Print a WebCore::LayoutPoint"
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ return 'LayoutPoint(%s, %s)' % (WebCoreLayoutUnitPrinter(self.val['m_x']).to_string(), WebCoreLayoutUnitPrinter(self.val['m_y']).to_string())
+
+
class WebCoreQualifiedNamePrinter(StringPrinter):
"Print a WebCore::QualifiedName"
@@ -185,9 +213,9 @@ class WebCoreQualifiedNamePrinter(StringPrinter):
self.length = 0
if self.val['m_impl']:
self.prefix_printer = WTFStringPrinter(
- self.val['m_impl']['m_prefix']['m_string'])
+ self.val['m_impl']['m_ptr']['m_prefix']['m_string'])
self.local_name_printer = WTFStringPrinter(
- self.val['m_impl']['m_localName']['m_string'])
+ self.val['m_impl']['m_ptr']['m_localName']['m_string'])
self.prefix_length = self.prefix_printer.get_length()
if self.prefix_length > 0:
self.length = (self.prefix_length + 1 +
@@ -282,6 +310,9 @@ def add_pretty_printers():
(re.compile("^WTF::String$"), WTFStringPrinter),
(re.compile("^WTF::StringImpl$"), WTFStringImplPrinter),
(re.compile("^WebCore::KURL$"), WebCoreKURLPrinter),
+ (re.compile("^WebCore::LayoutUnit$"), WebCoreLayoutUnitPrinter),
+ (re.compile("^WebCore::LayoutPoint$"), WebCoreLayoutPointPrinter),
+ (re.compile("^WebCore::LayoutSize$"), WebCoreLayoutSizePrinter),
(re.compile("^WebCore::QualifiedName$"), WebCoreQualifiedNamePrinter),
(re.compile("^JSC::Identifier$"), JSCIdentifierPrinter),
(re.compile("^JSC::JSString$"), JSCJSStringPrinter),
@@ -330,7 +361,7 @@ class PrintPathToRootCommand(gdb.Command):
try:
val = gdb.Frame.read_var(frame, arg)
except:
- print "No such variable, or invalid type"
+ print("No such variable, or invalid type")
return
target_type = str(val.type.target().strip_typedefs())
@@ -344,10 +375,10 @@ class PrintPathToRootCommand(gdb.Command):
padding = ''
while len(stack) > 0:
pair = stack.pop()
- print padding, pair[1], pair[0]
+ print(padding, pair[1], pair[0])
padding = padding + ' '
else:
- print 'Sorry: I don\'t know how to deal with %s yet.' % target_type
+ print('Sorry: I don\'t know how to deal with %s yet.' % target_type)
PrintPathToRootCommand()