dotfiles

personal dotfiles
git clone anongit@rnpnr.xyz:dotfiles.git
Log | Files | Refs | Feed | Submodules

Commit: b5fedf9414a578d12c01f3341d8ba0fff84db03a
Parent: c8ca3b0f2b3631c27b2bc68c286f90f3f9b280a6
Author: Randy Palamar
Date:   Wed, 28 May 2025 05:29:22 -0600

gdb: add str8, Stream, and Arena pretty printers

Diffstat:
M.config/gdb/plugins.py | 26++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/.config/gdb/plugins.py b/.config/gdb/plugins.py @@ -1,22 +1,40 @@ import gdb.printing +class Arena_printer(gdb.ValuePrinter): + def __init__(self, val): + self.val = val + + def to_string(self): + beg = self.val["beg"] + end = self.val["end"] + return '{capacity: %d}' % (end - beg) -class s8_printer(gdb.ValuePrinter): +class Stream_printer(gdb.ValuePrinter): def __init__(self, val): self.val = val def to_string(self): - len = self.val["len"] + len = self.val["widx"] str = self.val["data"].string(length=min(max(len, 0), 64)) return '{len = %d, data = "%s"}' % (len, str) +class str8_printer(gdb.ValuePrinter): + def __init__(self, val): + self.val = val + + def to_string(self): + len = self.val["len"] + str = self.val["data"].string(length=min(max(len, 0), 64)) + return '{len = %d, data = "%s"}' % (len, str) def build_pretty_printer(): pp = gdb.printing.RegexpCollectionPrettyPrinter("rnpnr") - pp.add_printer("s8", "s8", s8_printer) + pp.add_printer("s8", "s8", str8_printer) + pp.add_printer("str8", "str8", str8_printer) + pp.add_printer("Arena", "Arena", Arena_printer) + pp.add_printer("Stream", "Stream", Stream_printer) return pp - gdb.printing.register_pretty_printer( gdb.current_objfile(), build_pretty_printer() )