forked from Imagelibrary/littlefs
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...
94 lines
2.3 KiB
Python
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()
|
|
|