gdb/lists: add element option to foreach list

So we can focus on single element of struct, same as array.
Fix typo in foreach array args.element

Signed-off-by: xuxingliang <xuxingliang@xiaomi.com>
This commit is contained in:
xuxingliang 2024-11-08 12:28:26 +08:00 committed by Xiang Xiao
parent d8eccbc0f2
commit b885cb3633

View file

@ -349,6 +349,13 @@ class ForeachListEntry(gdb.Command):
parser.add_argument(
"-m", "--member", type=str, default=None, help="Member name in container"
)
parser.add_argument(
"-e",
"--element",
type=str,
help="Only dump this element in array member struct.",
default=None,
)
try:
args = parser.parse_args(argv)
except SystemExit:
@ -365,6 +372,7 @@ class ForeachListEntry(gdb.Command):
else node
)
entry = entry.dereference()
entry = entry[args.element] if args.element else entry
gdb.write(
f"{i} *({entry.type} *){hex(entry.address)} {entry.format_string(styling=True)}\n"
)
@ -409,5 +417,5 @@ class ForeachArray(gdb.Command):
node = pointer
len = args.length if args.length else utils.nitems(pointer)
for i in range(len):
entry = node[i][args.element] if arg.element else node[i]
entry = node[i][args.element] if args.element else node[i]
gdb.write(f"{i}: {entry.format_string(styling=True)}\n")