#!/usr/bin/python # Copyright (c) 2011 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 Chrome types. Add this to your gdb by amending your ~/.gdbinit as follows: python import sys sys.path.insert(0, "/path/to/tools/gdb/") import gdb_chrome This module relies on the WebKit gdb module already existing in your Python path. """ import gdb import webkit class String16Printer(webkit.StringPrinter): def to_string(self): return webkit.ustring_to_string(self.val['_M_dataplus']['_M_p']) class GURLPrinter(webkit.StringPrinter): def to_string(self): return self.val['spec_'] class FilePathPrinter(object): def __init__(self, val): self.val = val def to_string(self): return self.val['path_']['_M_dataplus']['_M_p'] def lookup_function(val): type_to_printer = { 'string16': String16Printer, 'GURL': GURLPrinter, 'FilePath': FilePathPrinter, } printer = type_to_printer.get(str(val.type), None) if printer: return printer(val) return None gdb.pretty_printers.append(lookup_function)