[PATCH 0/2] scripts/gdb/symbols: make BPF debug info available to GDB

Ilya Leoshkevich posted 2 patches 7 months ago
There is a newer version of this series
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
[PATCH 0/2] scripts/gdb/symbols: make BPF debug info available to GDB
Posted by Ilya Leoshkevich 7 months ago
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
Re: [PATCH 0/2] scripts/gdb/symbols: make BPF debug info available to GDB
Posted by Jan Kiszka 3 months, 1 week ago
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
Re: [PATCH 0/2] scripts/gdb/symbols: make BPF debug info available to GDB
Posted by Ilya Leoshkevich 3 months ago
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?
Re: [PATCH 0/2] scripts/gdb/symbols: make BPF debug info available to GDB
Posted by Jan Kiszka 3 months ago
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
Re: [PATCH 0/2] scripts/gdb/symbols: make BPF debug info available to GDB
Posted by Ilya Leoshkevich 6 months ago
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.
Re: [PATCH 0/2] scripts/gdb/symbols: make BPF debug info available to GDB
Posted by Alexei Starovoitov 6 months ago
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.
Re: [PATCH 0/2] scripts/gdb/symbols: make BPF debug info available to GDB
Posted by Ilya Leoshkevich 5 months, 1 week ago
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/