Files
littlefs/scripts/dbg.gdb.py
Christopher Haster 19747f691e scripts: dbgflags.py: Reimplemented filters as flags
So instead of:

  $ ./scripts/dbgflags.py o 0x10000003

The filter is now specified as a normal(ish) argparse flag:

  $ ./scripts/dbgflags.py --o 0x10000003

This is a bit easier to interop with in dbg.gdb.py, and I think a bit
more readable.

Though -a and --a now do _very_ different things. I'm sure that won't
confuse anyone...
2025-07-04 18:08:11 -05:00

94 lines
2.3 KiB
Python

#
# hooks for gdb:
# (gdb) source ./scripts/dbg.gdb.py
#
#
# dbgerr
class DbgErr(gdb.Command):
"""Decode littlefs error codes. See -h/--help for more info."""
def __init__(self):
super().__init__("dbgerr",
gdb.COMMAND_DATA,
gdb.COMPLETE_EXPRESSION)
def invoke(self, args, *_):
args = args.split()
# find nonflags
nonflags = []
for i, a in enumerate(args):
if not a.startswith('-'):
nonflags.append(i)
# parse and eval
for i, n in enumerate(nonflags):
try:
args[n] = '%d' % gdb.parse_and_eval(args[n])
except gdb.error as e:
raise gdb.GdbError(e)
# execute
gdb.execute(' '.join(['!./scripts/dbgerr.py'] + args))
DbgErr()
# dbgflags
class DbgFlags(gdb.Command):
"""Decode littlefs flags. See -h/--help for more info."""
def __init__(self):
super().__init__("dbgflags",
gdb.COMMAND_DATA,
gdb.COMPLETE_EXPRESSION)
def invoke(self, args, *_):
args = args.split()
# find nonflags
nonflags = []
for i, a in enumerate(args):
if not a.startswith('-'):
nonflags.append(i)
# parse and eval
for i, n in enumerate(nonflags):
try:
args[n] = '%d' % gdb.parse_and_eval(args[n])
except gdb.error as e:
raise gdb.GdbError(e)
# execute
gdb.execute(' '.join(['!./scripts/dbgflags.py'] + args))
DbgFlags()
# dbgtag
class DbgTag(gdb.Command):
"""Decode littlefs tags. See -h/--help for more info."""
def __init__(self):
super().__init__("dbgtag",
gdb.COMMAND_DATA,
gdb.COMPLETE_EXPRESSION)
def invoke(self, args, *_):
args = args.split()
# find nonflags
nonflags = []
for i, a in enumerate(args):
if not a.startswith('-'):
nonflags.append(i)
# parse and eval
for i, n in enumerate(nonflags):
try:
args[n] = '%d' % gdb.parse_and_eval(args[n])
except gdb.error as e:
raise gdb.GdbError(e)
# execute
gdb.execute(' '.join(['!./scripts/dbgtag.py'] + args))
DbgTag()