Re: [PATCHv3 00/13] scripts/gdb: Linux awareness debug commands

From: Jan Kiszka
Date: Sun Mar 13 2016 - 12:35:59 EST


On 2016-03-03 12:40, Kieran Bingham wrote:
> Hi Jan,
>
> V3 of the patchset respun. Now finally adding the lx-interrupts command
> after I resolved my issues with the Radix Tree parsing.
>
> This command only provides the interrupts that are available generically,
> and it seems that the /proc/interrupts function calls into arch specific
> layers to add extra information about arch specific interrupts.
>
> I'm not sure what to do about this yet - The values returned appear to be
> accurarate - but it's just a subset of the information returned by proc.
>

I didn't test this (due to the breakage in patch 10): Can you give
examples of what is missing, e.g. on ARM or x86?

> lx_thread_info_by_pid has been useful to me while looking at thread
> awareness, so I've included it into this patch set now. It makes finding
> internal thread information much more convenient.
>
> dentry_name has been moved to the utils module, as I am already using it
> in another command, so it's just not appropriate to be in proc.py
>
> The cpu_list mask iterators make calling for cpu in each_online_cpu() read
> nicely, and I've left the print_cpus() function in for now as a hidden
> helper. It can be used by calling:
> python linux.cpus.print_cpus()
> to check these generators, which I thought was quite nice - but I didn't
> know if it warranted a full command class for this.
>
> For convenience, this patch set submission can be found at
> http://git.linaro.org/people/kieran.bingham/linux.git gdb-scripts-2016-03-03-lkml-submission
>
> Patchset Changelog:
> v3:
> - Radix Tree parser introduced
> - cpu_list mask iterators added
> - lx-interrupts command implemented
> - dentry_name function moved to utils
> - lx-meminfo command PEP8 warnings fixed
> - lx_thread_info_by_pid introduced
>
> v2:
> - Reworked iterators with improved versions from Jeff Mahoney
> - Fixed !CONFIG_MODULES and !CONFIG_MMU support
> - Improvements on lx-meminfo
> - constants.py generated by Kbuild
> - IS_BUILTIN facility used to provide LX_CONFIG values
>
> v1:
> - Introduced lx-iomem, lx-ioports, lx-mounts, lx-meminfo
>
> Kieran Bingham (13):
> scripts/gdb: Provide linux constants
> scripts/gdb: Provide kernel list item generators
> scripts/gdb: Convert modules usage to lists functions
> scripts/gdb: Provide exception catching parser
> scripts/gdb: Support !CONFIG_MODULES gracefully
> scripts/gdb: Provide a dentry_name VFS path helper
> scripts/gdb: Add io resource readers
> scripts/gdb: Add mount point list command
> scripts/gdb: Add meminfo command
> scripts/gdb: Add cpu iterators
> scripts/gdb: Add a Radix Tree Parser
> scripts/gdb: Add interrupts command
> scripts/gdb: Add lx_thread_info_by_pid helper
>
> Kbuild | 10 +
> scripts/gdb/linux/Makefile | 12 +-
> scripts/gdb/linux/constants.py.in | 93 ++++++++
> scripts/gdb/linux/cpus.py | 21 ++
> scripts/gdb/linux/lists.py | 20 ++
> scripts/gdb/linux/modules.py | 22 +-
> scripts/gdb/linux/proc.py | 449 ++++++++++++++++++++++++++++++++++++++
> scripts/gdb/linux/radixtree.py | 74 +++++++
> scripts/gdb/linux/tasks.py | 19 ++
> scripts/gdb/linux/utils.py | 15 ++
> scripts/gdb/vmlinux-gdb.py | 2 +
> 11 files changed, 724 insertions(+), 13 deletions(-)
> create mode 100644 scripts/gdb/linux/constants.py.in
> create mode 100644 scripts/gdb/linux/radixtree.py
>

Besides the required rebase and, thus, the missing adjustment of the cpu
masks, I only have minor remarks. Maybe I will have more once I can play
with lx-interrupts ;).

However, I have a growing concern - I think we already discussed this
offline: Without automated tests, all these helpers may quickly fall
apart as the kernel changes. This should not block these patches, but
maybe you can think about some testing approaches before we have dozens
of helpers which can only be validated manually.

Thanks,
Jan

--
Siemens AG, Corporate Technology, CT RDA ITP SES-DE
Corporate Competence Center Embedded Linux