authorgravatar for silver@silv.reSilver <silver@silv.re> 2023-03-24 00:38:02+00:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2023-03-30 12:15:53+03:00
log83051b0cbf31b76e824d3911a7f4a0be3c0cf94d
tree8ae3b2040bad45e31d9cdce102d15bcbb8fd8e1a
parent11903436a9818cba1ef474dfd705d10798d16ef6

Update GDB pretty printers


1 files changed, 10 insertions(+), 11 deletions(-)

tools/zig_gdb_pretty_printers.py+10-11
......@@ -2,22 +2,24 @@
22# put "source /path/to/zig_gdb_pretty_printers.py" in ~/.gdbinit to load it automatically.
33import gdb.printing
44
5
56class ZigPrettyPrinter(gdb.printing.PrettyPrinter):
67 def __init__(self):
78 super().__init__('Zig')
89
910 def __call__(self, val):
1011 tag = val.type.tag
11 if(tag is None):
12 if tag is None:
1213 return None
13 if(tag == '[]u8'):
14 if tag == '[]u8':
1415 return StringPrinter(val)
15 if(tag.startswith('[]')):
16 if tag.startswith('[]'):
1617 return SlicePrinter(val)
17 if(tag.startswith('?')):
18 if tag.startswith('?'):
1819 return OptionalPrinter(val)
1920 return None
2021
22
2123class SlicePrinter:
2224 def __init__(self, val):
2325 self.val = val
......@@ -35,6 +37,7 @@ class SlicePrinter:
3537 def display_hint(self):
3638 return 'array'
3739
40
3841class StringPrinter:
3942 def __init__(self, val):
4043 self.val = val
......@@ -45,20 +48,16 @@ class StringPrinter:
4548 def display_hint(self):
4649 return 'string'
4750
51
4852class OptionalPrinter:
4953 def __init__(self, val):
5054 self.val = val
5155
5256 def to_string(self):
53 if(self.val['maybe']):
54 return None # printed by children()
57 if self.val['some']:
58 return self.val['data']
5559 else:
5660 return 'null'
5761
58 def children(self):
59 def it(val):
60 if(val['maybe']):
61 yield ('payload', val['val'])
62 return it(self.val)
6362
6463gdb.printing.register_pretty_printer(gdb.current_objfile(), ZigPrettyPrinter())