summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-24 18:09:51 +0000
committerjyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-24 18:09:51 +0000
commit8606130cdf5ab75b3cf25ec34ec8f56051404ac5 (patch)
tree556c8546caa4a40711aca2fee052ef30fb82441e
parentc8ff8a66983953b32ce0cc43c9de1a7a25a6d8cc (diff)
downloadchromium_src-8606130cdf5ab75b3cf25ec34ec8f56051404ac5.zip
chromium_src-8606130cdf5ab75b3cf25ec34ec8f56051404ac5.tar.gz
chromium_src-8606130cdf5ab75b3cf25ec34ec8f56051404ac5.tar.bz2
Add a gdb printer for IPC::Message, which makes their type easier to decipher.
Review URL: https://codereview.chromium.org/13641003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@196180 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--tools/gdb/gdb_chrome.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/tools/gdb/gdb_chrome.py b/tools/gdb/gdb_chrome.py
index 2d60719..9ff5553 100644
--- a/tools/gdb/gdb_chrome.py
+++ b/tools/gdb/gdb_chrome.py
@@ -185,6 +185,29 @@ class TimePrinter(object):
pp_set.add_printer('base::Time', '^base::Time$', TimePrinter)
+class IpcMessagePrinter(Printer):
+ def header(self):
+ return self.val['header_'].cast(
+ gdb.lookup_type('IPC::Message::Header').pointer())
+
+ def to_string(self):
+ message_type = self.header()['type']
+ return '%s of kind %s line %s' % (
+ self.val.dynamic_type,
+ (message_type >> 16).cast(gdb.lookup_type('IPCMessageStart')),
+ message_type & 0xffff)
+
+ def children(self):
+ yield ('header_', self.header().dereference())
+ yield ('capacity_', self.val['capacity_'])
+ yield ('variable_buffer_offset_', self.val['variable_buffer_offset_'])
+ for field in self.val.type.fields():
+ if field.is_base_class:
+ continue
+ yield (field.name, self.val[field.name])
+pp_set.add_printer('IPC::Message', '^IPC::Message$', IpcMessagePrinter)
+
+
class NotificationRegistrarPrinter(Printer):
def to_string(self):
try: