All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Linux Kernel Debugger GDB extensions
@ 2016-01-07 12:52 Kieran Bingham
  2016-01-07 12:52 ` [PATCH 1/2] scripts/gdb: Add version command Kieran Bingham
  2016-01-07 12:52 ` [PATCH 2/2] scripts/gdb: Add cmdline reader command Kieran Bingham
  0 siblings, 2 replies; 5+ messages in thread
From: Kieran Bingham @ 2016-01-07 12:52 UTC (permalink / raw)
  To: jan.kiszka, linux-kernel
  Cc: peter.griffin, lee.jones, maxime.coquelin, Kieran Bingham

ST Microelectronics provides a set of debugging tools, customised to attach
and debug a running (or crashed) linux kernel based on GDB. As part of working
towards providing this functionality upstream, a number of commands can be
written using the new CONFIG_GDB_SCRIPTS facilities.

Here, as a means to introducing the work which is ongoing, are two initial
(simple) commands which allow the user to identify the kernel version and
command line used to boot.

 lx-cmdline  Report the Linux Commandline used in the current kernel.
 lx-version  Report the Linux Version of the current kernel.

Based on the existing LKD project, follow up work will aim to provide similar
facilities for:
	/proc/iomem
	/proc/ioports
	/proc/mounts
	/proc/interrupts
	/proc/meminfo

The larger scale project also aims to provide thread integration into GDB,
and userspace frame walking where possible.

Kieran Bingham (2):
  scripts/gdb: Add version command
  scripts/gdb: Add cmdline reader command

 scripts/gdb/linux/proc.py  | 40 ++++++++++++++++++++++++++++++++++++++++
 scripts/gdb/vmlinux-gdb.py |  1 +
 2 files changed, 41 insertions(+)
 create mode 100644 scripts/gdb/linux/proc.py

-- 
2.5.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] scripts/gdb: Add version command
  2016-01-07 12:52 [PATCH 0/2] Linux Kernel Debugger GDB extensions Kieran Bingham
@ 2016-01-07 12:52 ` Kieran Bingham
  2016-01-09 16:02   ` Jan Kiszka
  2016-01-07 12:52 ` [PATCH 2/2] scripts/gdb: Add cmdline reader command Kieran Bingham
  1 sibling, 1 reply; 5+ messages in thread
From: Kieran Bingham @ 2016-01-07 12:52 UTC (permalink / raw)
  To: jan.kiszka, linux-kernel
  Cc: peter.griffin, lee.jones, maxime.coquelin, Kieran Bingham

lx-version  Report the Linux Version of the current kernel.

Add a command to identify the version specified by the banner in the
debugged kernel.

This lets the user identify the kernel of the running kernel, and will
let later scripts compare the banner of the attached kernel against the
banner in the vmlinux symbols files to verify that the files are correct.

Signed-off-by: Kieran Bingham <kieran.bingham@linaro.org>
---
 scripts/gdb/linux/proc.py  | 27 +++++++++++++++++++++++++++
 scripts/gdb/vmlinux-gdb.py |  1 +
 2 files changed, 28 insertions(+)
 create mode 100644 scripts/gdb/linux/proc.py

diff --git a/scripts/gdb/linux/proc.py b/scripts/gdb/linux/proc.py
new file mode 100644
index 000000000000..7a2afe60416a
--- /dev/null
+++ b/scripts/gdb/linux/proc.py
@@ -0,0 +1,27 @@
+#
+# gdb helper commands and functions for Linux kernel debugging
+#
+#  Kernel proc information reader
+#
+# Copyright (c) 2016 Linaro Ltd
+#
+# Authors:
+#  Kieran Bingham <kieran.bingham@linaro.org>
+#
+# This work is licensed under the terms of the GNU GPL version 2.
+#
+
+import gdb
+
+class LxVersion(gdb.Command):
+    """ Report the Linux Version of the current kernel.
+        Equivalent to cat /proc/version on a running target
+    """
+    def __init__(self):
+        super(LxVersion, self).__init__("lx-version", gdb.COMMAND_DATA)
+
+    def invoke(self, arg, from_tty):
+        # linux_banner should contain a newline
+        gdb.write(gdb.parse_and_eval("linux_banner").string())
+
+LxVersion()
diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py
index ce82bf5c3943..d5943eca19cd 100644
--- a/scripts/gdb/vmlinux-gdb.py
+++ b/scripts/gdb/vmlinux-gdb.py
@@ -29,3 +29,4 @@ else:
     import linux.tasks
     import linux.cpus
     import linux.lists
+    import linux.proc
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] scripts/gdb: Add cmdline reader command
  2016-01-07 12:52 [PATCH 0/2] Linux Kernel Debugger GDB extensions Kieran Bingham
  2016-01-07 12:52 ` [PATCH 1/2] scripts/gdb: Add version command Kieran Bingham
@ 2016-01-07 12:52 ` Kieran Bingham
  1 sibling, 0 replies; 5+ messages in thread
From: Kieran Bingham @ 2016-01-07 12:52 UTC (permalink / raw)
  To: jan.kiszka, linux-kernel
  Cc: peter.griffin, lee.jones, maxime.coquelin, Kieran Bingham

lx-cmdline  Report the Linux Commandline used in the current kernel

Signed-off-by: Kieran Bingham <kieran.bingham@linaro.org>
---
 scripts/gdb/linux/proc.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/scripts/gdb/linux/proc.py b/scripts/gdb/linux/proc.py
index 7a2afe60416a..4063ef65e160 100644
--- a/scripts/gdb/linux/proc.py
+++ b/scripts/gdb/linux/proc.py
@@ -13,6 +13,19 @@
 
 import gdb
 
+class LxCmdLine(gdb.Command):
+    """ Report the Linux Commandline used in the current kernel.
+        Equivalent to cat /proc/cmdline on a running target
+    """
+
+    def __init__(self):
+        super(LxCmdLine, self).__init__("lx-cmdline", gdb.COMMAND_DATA)
+
+    def invoke(self, arg, from_tty):
+        gdb.write(gdb.parse_and_eval("saved_command_line").string() + "\n")
+
+LxCmdLine()
+
 class LxVersion(gdb.Command):
     """ Report the Linux Version of the current kernel.
         Equivalent to cat /proc/version on a running target
-- 
2.5.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] scripts/gdb: Add version command
  2016-01-07 12:52 ` [PATCH 1/2] scripts/gdb: Add version command Kieran Bingham
@ 2016-01-09 16:02   ` Jan Kiszka
  2016-01-09 16:29     ` Kieran Bingham
  0 siblings, 1 reply; 5+ messages in thread
From: Jan Kiszka @ 2016-01-09 16:02 UTC (permalink / raw)
  To: Kieran Bingham, linux-kernel; +Cc: peter.griffin, lee.jones, maxime.coquelin

[-- Attachment #1: Type: text/plain, Size: 2554 bytes --]

On 2016-01-07 13:52, Kieran Bingham wrote:
> lx-version  Report the Linux Version of the current kernel.
> 
> Add a command to identify the version specified by the banner in the
> debugged kernel.
> 
> This lets the user identify the kernel of the running kernel, and will
> let later scripts compare the banner of the attached kernel against the
> banner in the vmlinux symbols files to verify that the files are correct.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham@linaro.org>
> ---
>  scripts/gdb/linux/proc.py  | 27 +++++++++++++++++++++++++++
>  scripts/gdb/vmlinux-gdb.py |  1 +
>  2 files changed, 28 insertions(+)
>  create mode 100644 scripts/gdb/linux/proc.py
> 
> diff --git a/scripts/gdb/linux/proc.py b/scripts/gdb/linux/proc.py
> new file mode 100644
> index 000000000000..7a2afe60416a
> --- /dev/null
> +++ b/scripts/gdb/linux/proc.py
> @@ -0,0 +1,27 @@
> +#
> +# gdb helper commands and functions for Linux kernel debugging
> +#
> +#  Kernel proc information reader
> +#
> +# Copyright (c) 2016 Linaro Ltd
> +#
> +# Authors:
> +#  Kieran Bingham <kieran.bingham@linaro.org>
> +#
> +# This work is licensed under the terms of the GNU GPL version 2.
> +#
> +
> +import gdb
> +

pep8 says:

scripts/gdb/linux/proc.py:16:1: E302 expected 2 blank lines, found 1

> +class LxVersion(gdb.Command):
> +    """ Report the Linux Version of the current kernel.
> +        Equivalent to cat /proc/version on a running target
> +    """

Minor thing, but for the sake of consistency: Moving the """ into a new
line gives an additional empty line at the end of the help output. Other
commands, also gdb built-ins, don't do this.

> +    def __init__(self):
> +        super(LxVersion, self).__init__("lx-version", gdb.COMMAND_DATA)
> +
> +    def invoke(self, arg, from_tty):
> +        # linux_banner should contain a newline
> +        gdb.write(gdb.parse_and_eval("linux_banner").string())
> +
> +LxVersion()
> diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py
> index ce82bf5c3943..d5943eca19cd 100644
> --- a/scripts/gdb/vmlinux-gdb.py
> +++ b/scripts/gdb/vmlinux-gdb.py
> @@ -29,3 +29,4 @@ else:
>      import linux.tasks
>      import linux.cpus
>      import linux.lists
> +    import linux.proc
> 

Two options: I can adjust these (and the corresponding issues in patch
2) myself before sending out a merge request to Andrew. Or, if you have
more in your queue, I'll wait for a potential longer v2 round. Just let
me know.

Thanks,
Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] scripts/gdb: Add version command
  2016-01-09 16:02   ` Jan Kiszka
@ 2016-01-09 16:29     ` Kieran Bingham
  0 siblings, 0 replies; 5+ messages in thread
From: Kieran Bingham @ 2016-01-09 16:29 UTC (permalink / raw)
  To: Jan Kiszka, linux-kernel; +Cc: peter.griffin, lee.jones, maxime.coquelin

Hi Jan

On 09/01/16 16:02, Jan Kiszka wrote:
> On 2016-01-07 13:52, Kieran Bingham wrote:
>> lx-version  Report the Linux Version of the current kernel.
>>
>> Add a command to identify the version specified by the banner in the
>> debugged kernel.
>>
>> This lets the user identify the kernel of the running kernel, and will
>> let later scripts compare the banner of the attached kernel against the
>> banner in the vmlinux symbols files to verify that the files are correct.
>>
>> Signed-off-by: Kieran Bingham <kieran.bingham@linaro.org>
>> ---
>>  scripts/gdb/linux/proc.py  | 27 +++++++++++++++++++++++++++
>>  scripts/gdb/vmlinux-gdb.py |  1 +
>>  2 files changed, 28 insertions(+)
>>  create mode 100644 scripts/gdb/linux/proc.py
>>
>> diff --git a/scripts/gdb/linux/proc.py b/scripts/gdb/linux/proc.py
>> new file mode 100644
>> index 000000000000..7a2afe60416a
>> --- /dev/null
>> +++ b/scripts/gdb/linux/proc.py
>> @@ -0,0 +1,27 @@
>> +#
>> +# gdb helper commands and functions for Linux kernel debugging
>> +#
>> +#  Kernel proc information reader
>> +#
>> +# Copyright (c) 2016 Linaro Ltd
>> +#
>> +# Authors:
>> +#  Kieran Bingham <kieran.bingham@linaro.org>
>> +#
>> +# This work is licensed under the terms of the GNU GPL version 2.
>> +#
>> +
>> +import gdb
>> +
> pep8 says:
>
> scripts/gdb/linux/proc.py:16:1: E302 expected 2 blank lines, found 1

My apologies - I should have run those checks before I sent the patches.
I've added it to my checklist, to make sure I do, for any more that I send.

>
>> +class LxVersion(gdb.Command):
>> +    """ Report the Linux Version of the current kernel.
>> +        Equivalent to cat /proc/version on a running target
>> +    """
> Minor thing, but for the sake of consistency: Moving the """ into a new
> line gives an additional empty line at the end of the help output. Other
> commands, also gdb built-ins, don't do this.

And, I'll try to make sure I copy the style correctly for any follow-ups!

>
>> +    def __init__(self):
>> +        super(LxVersion, self).__init__("lx-version", gdb.COMMAND_DATA)
>> +
>> +    def invoke(self, arg, from_tty):
>> +        # linux_banner should contain a newline
>> +        gdb.write(gdb.parse_and_eval("linux_banner").string())
>> +
>> +LxVersion()
>> diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py
>> index ce82bf5c3943..d5943eca19cd 100644
>> --- a/scripts/gdb/vmlinux-gdb.py
>> +++ b/scripts/gdb/vmlinux-gdb.py
>> @@ -29,3 +29,4 @@ else:
>>      import linux.tasks
>>      import linux.cpus
>>      import linux.lists
>> +    import linux.proc
>>
> Two options: I can adjust these (and the corresponding issues in patch
> 2) myself before sending out a merge request to Andrew. Or, if you have
> more in your queue, I'll wait for a potential longer v2 round. Just let
> me know.
>
> Thanks,
> Jan

If you're happy to do the fix-ups that's fine by me.
These two are simple and standalone, so I don't see any point in holding
them back.

--
Regards

Kieran

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-01-09 16:29 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-07 12:52 [PATCH 0/2] Linux Kernel Debugger GDB extensions Kieran Bingham
2016-01-07 12:52 ` [PATCH 1/2] scripts/gdb: Add version command Kieran Bingham
2016-01-09 16:02   ` Jan Kiszka
2016-01-09 16:29     ` Kieran Bingham
2016-01-07 12:52 ` [PATCH 2/2] scripts/gdb: Add cmdline reader command Kieran Bingham

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.