diff options
author | jyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-24 18:09:51 +0000 |
---|---|---|
committer | jyasskin@chromium.org <jyasskin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-24 18:09:51 +0000 |
commit | 8606130cdf5ab75b3cf25ec34ec8f56051404ac5 (patch) | |
tree | 556c8546caa4a40711aca2fee052ef30fb82441e | |
parent | c8ff8a66983953b32ce0cc43c9de1a7a25a6d8cc (diff) | |
download | chromium_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.py | 23 |
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: |