scripts/gdb/linux/bpf.py | 253 ++++++++++++++++++++++++++++++ scripts/gdb/linux/constants.py.in | 3 + scripts/gdb/linux/radixtree.py | 139 +++++++++++++++- scripts/gdb/linux/symbols.py | 77 ++++++++- 4 files changed, 462 insertions(+), 10 deletions(-) create mode 100644 scripts/gdb/linux/bpf.py
Hi, This series greatly simplifies debugging BPF progs when using QEMU gdbstub by providing symbol names, sizes, and line numbers to GDB. Patch 1 adds radix tree iteration, which is necessary for parsing prog_idr. Patch 2 is the actual implementation; its description contains some details on how to use this. Best regards, Ilya Ilya Leoshkevich (2): scripts/gdb/radix-tree: add lx-radix-tree-command scripts/gdb/symbols: make BPF debug info available to GDB scripts/gdb/linux/bpf.py | 253 ++++++++++++++++++++++++++++++ scripts/gdb/linux/constants.py.in | 3 + scripts/gdb/linux/radixtree.py | 139 +++++++++++++++- scripts/gdb/linux/symbols.py | 77 ++++++++- 4 files changed, 462 insertions(+), 10 deletions(-) create mode 100644 scripts/gdb/linux/bpf.py -- 2.50.0
On 10.07.25 13:53, Ilya Leoshkevich wrote: > Hi, > > This series greatly simplifies debugging BPF progs when using QEMU > gdbstub by providing symbol names, sizes, and line numbers to GDB. > > Patch 1 adds radix tree iteration, which is necessary for parsing > prog_idr. Patch 2 is the actual implementation; its description > contains some details on how to use this. > > Best regards, > Ilya > > Ilya Leoshkevich (2): > scripts/gdb/radix-tree: add lx-radix-tree-command > scripts/gdb/symbols: make BPF debug info available to GDB > > scripts/gdb/linux/bpf.py | 253 ++++++++++++++++++++++++++++++ > scripts/gdb/linux/constants.py.in | 3 + > scripts/gdb/linux/radixtree.py | 139 +++++++++++++++- > scripts/gdb/linux/symbols.py | 77 ++++++++- > 4 files changed, 462 insertions(+), 10 deletions(-) > create mode 100644 scripts/gdb/linux/bpf.py > This wasn't picked up yet, right? Sorry for the late reply, my part of the "maintenance" here is best effort based. Looks good to me regarding integration. I haven't tried it out, I'm just wondering if it has notable performance impact on starting gdb or interacting or when that could be the case. BPF programs are not uncommon in common setups today. But if you don't want to debug them, does this add unneeded overhead? Otherwise, I think it could move forward if it still applies (which it likely does). Jan -- Siemens AG, Foundational Technologies Linux Expert Center
On Thu, 2025-10-30 at 17:47 +0100, Jan Kiszka wrote: > On 10.07.25 13:53, Ilya Leoshkevich wrote: > > Hi, > > > > This series greatly simplifies debugging BPF progs when using QEMU > > gdbstub by providing symbol names, sizes, and line numbers to GDB. > > > > Patch 1 adds radix tree iteration, which is necessary for parsing > > prog_idr. Patch 2 is the actual implementation; its description > > contains some details on how to use this. > > > > Best regards, > > Ilya > > > > Ilya Leoshkevich (2): > > scripts/gdb/radix-tree: add lx-radix-tree-command > > scripts/gdb/symbols: make BPF debug info available to GDB > > > > scripts/gdb/linux/bpf.py | 253 > > ++++++++++++++++++++++++++++++ > > scripts/gdb/linux/constants.py.in | 3 + > > scripts/gdb/linux/radixtree.py | 139 +++++++++++++++- > > scripts/gdb/linux/symbols.py | 77 ++++++++- > > 4 files changed, 462 insertions(+), 10 deletions(-) > > create mode 100644 scripts/gdb/linux/bpf.py > > > > This wasn't picked up yet, right? Sorry for the late reply, my part > of > the "maintenance" here is best effort based. > > Looks good to me regarding integration. I haven't tried it out, I'm > just > wondering if it has notable performance impact on starting gdb or > interacting or when that could be the case. BPF programs are not > uncommon in common setups today. But if you don't want to debug them, > does this add unneeded overhead? > > Otherwise, I think it could move forward if it still applies (which > it > likely does). > > Jan Thanks for taking a look! I have to admit the performance implications are noticeable due to having to spawn an external process for each BPF prog. What do you think about hiding this behind `lx-symbols --bpf` flag?
On 05.11.25 20:32, Ilya Leoshkevich wrote: > On Thu, 2025-10-30 at 17:47 +0100, Jan Kiszka wrote: >> On 10.07.25 13:53, Ilya Leoshkevich wrote: >>> Hi, >>> >>> This series greatly simplifies debugging BPF progs when using QEMU >>> gdbstub by providing symbol names, sizes, and line numbers to GDB. >>> >>> Patch 1 adds radix tree iteration, which is necessary for parsing >>> prog_idr. Patch 2 is the actual implementation; its description >>> contains some details on how to use this. >>> >>> Best regards, >>> Ilya >>> >>> Ilya Leoshkevich (2): >>> scripts/gdb/radix-tree: add lx-radix-tree-command >>> scripts/gdb/symbols: make BPF debug info available to GDB >>> >>> scripts/gdb/linux/bpf.py | 253 >>> ++++++++++++++++++++++++++++++ >>> scripts/gdb/linux/constants.py.in | 3 + >>> scripts/gdb/linux/radixtree.py | 139 +++++++++++++++- >>> scripts/gdb/linux/symbols.py | 77 ++++++++- >>> 4 files changed, 462 insertions(+), 10 deletions(-) >>> create mode 100644 scripts/gdb/linux/bpf.py >>> >> >> This wasn't picked up yet, right? Sorry for the late reply, my part >> of >> the "maintenance" here is best effort based. >> >> Looks good to me regarding integration. I haven't tried it out, I'm >> just >> wondering if it has notable performance impact on starting gdb or >> interacting or when that could be the case. BPF programs are not >> uncommon in common setups today. But if you don't want to debug them, >> does this add unneeded overhead? >> >> Otherwise, I think it could move forward if it still applies (which >> it >> likely does). >> >> Jan > > Thanks for taking a look! > > I have to admit the performance implications are noticeable due to > having to spawn an external process for each BPF prog. > > What do you think about hiding this behind `lx-symbols --bpf` flag? Sounds like a reasonable path. Just one detail: I think gdb only uses a single dash for flags, thus: lx-symbols -bpf. Jan -- Siemens AG, Foundational Technologies Linux Expert Center
On Thu, 2025-07-10 at 13:53 +0200, Ilya Leoshkevich wrote: > Hi, > > This series greatly simplifies debugging BPF progs when using QEMU > gdbstub by providing symbol names, sizes, and line numbers to GDB. > > Patch 1 adds radix tree iteration, which is necessary for parsing > prog_idr. Patch 2 is the actual implementation; its description > contains some details on how to use this. > > Best regards, > Ilya > > Ilya Leoshkevich (2): > scripts/gdb/radix-tree: add lx-radix-tree-command > scripts/gdb/symbols: make BPF debug info available to GDB > > scripts/gdb/linux/bpf.py | 253 > ++++++++++++++++++++++++++++++ > scripts/gdb/linux/constants.py.in | 3 + > scripts/gdb/linux/radixtree.py | 139 +++++++++++++++- > scripts/gdb/linux/symbols.py | 77 ++++++++- > 4 files changed, 462 insertions(+), 10 deletions(-) > create mode 100644 scripts/gdb/linux/bpf.py Gentle ping. Any opinions on whether this is valuable? Personally I've been using this for quite some time, and having source level debugging for BPF progs (even if variables can't be inspected) feels really nice.
On Tue, Aug 5, 2025 at 6:23 AM Ilya Leoshkevich <iii@linux.ibm.com> wrote: > > On Thu, 2025-07-10 at 13:53 +0200, Ilya Leoshkevich wrote: > > Hi, > > > > This series greatly simplifies debugging BPF progs when using QEMU > > gdbstub by providing symbol names, sizes, and line numbers to GDB. > > > > Patch 1 adds radix tree iteration, which is necessary for parsing > > prog_idr. Patch 2 is the actual implementation; its description > > contains some details on how to use this. > > > > Best regards, > > Ilya > > > > Ilya Leoshkevich (2): > > scripts/gdb/radix-tree: add lx-radix-tree-command > > scripts/gdb/symbols: make BPF debug info available to GDB > > > > scripts/gdb/linux/bpf.py | 253 > > ++++++++++++++++++++++++++++++ > > scripts/gdb/linux/constants.py.in | 3 + > > scripts/gdb/linux/radixtree.py | 139 +++++++++++++++- > > scripts/gdb/linux/symbols.py | 77 ++++++++- > > 4 files changed, 462 insertions(+), 10 deletions(-) > > create mode 100644 scripts/gdb/linux/bpf.py > > Gentle ping. Any opinions on whether this is valuable? Personally I've > been using this for quite some time, and having source level debugging > for BPF progs (even if variables can't be inspected) feels really nice. Looks very useful to me. Not sure which git tree it should be routed to.
On Tue, 2025-08-05 at 09:48 -0700, Alexei Starovoitov wrote: > On Tue, Aug 5, 2025 at 6:23 AM Ilya Leoshkevich <iii@linux.ibm.com> > wrote: > > > > On Thu, 2025-07-10 at 13:53 +0200, Ilya Leoshkevich wrote: > > > Hi, > > > > > > This series greatly simplifies debugging BPF progs when using > > > QEMU > > > gdbstub by providing symbol names, sizes, and line numbers to > > > GDB. > > > > > > Patch 1 adds radix tree iteration, which is necessary for parsing > > > prog_idr. Patch 2 is the actual implementation; its description > > > contains some details on how to use this. > > > > > > Best regards, > > > Ilya > > > > > > Ilya Leoshkevich (2): > > > scripts/gdb/radix-tree: add lx-radix-tree-command > > > scripts/gdb/symbols: make BPF debug info available to GDB > > > > > > scripts/gdb/linux/bpf.py | 253 > > > ++++++++++++++++++++++++++++++ > > > scripts/gdb/linux/constants.py.in | 3 + > > > scripts/gdb/linux/radixtree.py | 139 +++++++++++++++- > > > scripts/gdb/linux/symbols.py | 77 ++++++++- > > > 4 files changed, 462 insertions(+), 10 deletions(-) > > > create mode 100644 scripts/gdb/linux/bpf.py > > > > Gentle ping. Any opinions on whether this is valuable? Personally > > I've > > been using this for quite some time, and having source level > > debugging > > for BPF progs (even if variables can't be inspected) feels really > > nice. > > Looks very useful to me. > Not sure which git tree it should be routed to. Thanks, glad to hear that! I think it makes sense to route it via the Andrew Morton's tree, like all the other GDB patches. IIUC the proposal to ask subsystems to maintain GDB scripts relevant to them [1] didn't go anywhere. [1] https://lore.kernel.org/all/20250625231053.1134589-1-florian.fainelli@broadcom.com/
© 2016 - 2026 Red Hat, Inc.