Commit: be647ed24f7abf824548f65109e57a7cf29dff15
Parent: a323cabcd5cd093badea1bd90f22b1396814890c
Author: Randy Palamar
Date: Wed, 1 Apr 2026 07:28:29 -0600
gdb: slightly more robust handling for gdb's terrible python api
Diffstat:
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/.config/gdb/gdbinit b/.config/gdb/gdbinit
@@ -4,6 +4,8 @@ source ~/.config/gdb/plugins.py
set breakpoint pending on
+set disassembly-flavor intel
+
define hook-quit
set confirm off
end
diff --git a/.config/gdb/plugins.py b/.config/gdb/plugins.py
@@ -1,5 +1,12 @@
+import gdb
import gdb.printing
+def fuck_you_gdb(s, member, default):
+ try:
+ return s[member]
+ except:
+ return default
+
class Arena_printer(gdb.ValuePrinter):
def __init__(self, val):
self.val = val
@@ -19,13 +26,15 @@ class Stream_printer(gdb.ValuePrinter):
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 __init__(self, val):
+ self.val = val
+ def to_string(self):
+ len = fuck_you_gdb(self.val, "len", 0);
+ if len == 0:
+ len = fuck_you_gdb(self.val, "length", 0)
+ str = self.val["data"].string(length=min(max(len, 0) 64))
+
+ return '{length = %d, data = "%s"}' % (len, str)
def build_pretty_printer():
pp = gdb.printing.RegexpCollectionPrettyPrinter("rnpnr")