gdb-intro-kwlug/examples/python/pretty-print/str.py

30 lines
494 B
Python

import gdb.printing
import re
class StdStringPrinter:
def __init__ (self, val):
self.val = val
def to_string (self):
return self.val['_M_dataplus']['_M_p']
def display_hint (self):
return 'string'
def str_lookup_function(val):
bbb = {}
try:
bbb = val.type.fields ()
except:
pass
found = 0
for x in bbb:
if x.name == '_M_dataplus':
found = 1
if found == 1:
return StdStringPrinter(val)
return None
gdb.printing.register_pretty_printer (gdb, str_lookup_function)