* [PATCH v6 00/21] Add gdb python scripts as kernel debugging helpers
@ 2013-10-28 8:58 Jan Kiszka
2013-10-28 8:58 ` [PATCH v6 15/21] scripts/gdb: Add internal helper and convenience function to retrieve thread_info Jan Kiszka
0 siblings, 1 reply; 2+ messages in thread
From: Jan Kiszka @ 2013-10-28 8:58 UTC (permalink / raw)
To: Andrew Morton, linux-kernel
Cc: Jason Wessel, kgdb-bugreport, Andi Kleen, Tom Tromey,
Ben Widawsky, Borislav Petkov, Tatiana Al-Chueyr Martins,
David S. Miller, Fenghua Yu, Kay Sievers, linux-doc, linux-ia64,
linux-kbuild, Michal Marek, Rob Landley, sparclinux, Tony Luck
It's been a while since my last update of these patches. This one is
mostly about cleaning up and making some details more convenient:
- proper registration of module data segments to access module
variables - this obsoletes lx_modvar again
- stable breakpoint target on do_init_module in order to track module
loading more reliably from the debugger
- internal refactoring with the aim to "pythonize" the scripts (credits
for all valuable suggestions belong to Tatiana, many thanks, for
improper implementations to me)
See http://lkml.indiana.edu/hypermail/linux/kernel/1210.0/01598.html for
the original description and
git://git.kiszka.org/linux.git queues/gdb-scripts
for the latest version.
Jan
CC: "David S. Miller" <davem@davemloft.net>
CC: Fenghua Yu <fenghua.yu@intel.com>
CC: Kay Sievers <kay@vrfy.org>
CC: linux-doc@vger.kernel.org
CC: linux-ia64@vger.kernel.org
CC: linux-kbuild@vger.kernel.org
CC: Michal Marek <mmarek@suse.cz>
CC: Rob Landley <rob@landley.net>
CC: sparclinux@vger.kernel.org
CC: Tony Luck <tony.luck@intel.com>
Jan Kiszka (21):
scripts/gdb: Add infrastructure
scripts/gdb: Add cache for type objects
scripts/gdb: Add container_of helper and convenience function
scripts/gdb: Add module iteration class
scripts/gdb: Add lx-symbols command
module: Do not inline do_init_module
scripts/gdb: Add automatic symbol reloading on module insertion
scripts/gdb: Add internal helper and convenience function to look up a
module
scripts/gdb: Add get_target_endianness helper
scripts/gdb: Add read_u16/32/64 helpers
scripts/gdb: Add lx-dmesg command
scripts/gdb: Add task iteration class
scripts/gdb: Add helper and convenience function to look up tasks
scripts/gdb: Add is_target_arch helper
scripts/gdb: Add internal helper and convenience function to retrieve
thread_info
scripts/gdb: Add get_gdbserver_type helper
scripts/gdb: Add internal helper and convenience function for per-cpu
lookup
scripts/gdb: Add lx_current convenience function
scripts/gdb: Add class to iterate over CPU masks
scripts/gdb: Add lx-lsmod command
scripts/gdb: Add basic documentation
Documentation/gdb-kernel-debugging.txt | 159 +++++++++++++++++++++++++++++++
Makefile | 5 +-
kernel/module.c | 9 +-
scripts/Makefile | 3 +-
scripts/gdb/Makefile | 11 +++
scripts/gdb/linux/Makefile | 9 ++
scripts/gdb/linux/__init__.py | 0
scripts/gdb/linux/cpus.py | 139 +++++++++++++++++++++++++++
scripts/gdb/linux/dmesg.py | 64 +++++++++++++
scripts/gdb/linux/modules.py | 111 ++++++++++++++++++++++
scripts/gdb/linux/symbols.py | 166 +++++++++++++++++++++++++++++++++
scripts/gdb/linux/tasks.py | 108 +++++++++++++++++++++
scripts/gdb/linux/utils.py | 156 +++++++++++++++++++++++++++++++
scripts/gdb/vmlinux-gdb.py | 30 ++++++
14 files changed, 966 insertions(+), 4 deletions(-)
create mode 100644 Documentation/gdb-kernel-debugging.txt
create mode 100644 scripts/gdb/Makefile
create mode 100644 scripts/gdb/linux/Makefile
create mode 100644 scripts/gdb/linux/__init__.py
create mode 100644 scripts/gdb/linux/cpus.py
create mode 100644 scripts/gdb/linux/dmesg.py
create mode 100644 scripts/gdb/linux/modules.py
create mode 100644 scripts/gdb/linux/symbols.py
create mode 100644 scripts/gdb/linux/tasks.py
create mode 100644 scripts/gdb/linux/utils.py
create mode 100644 scripts/gdb/vmlinux-gdb.py
--
1.8.1.1.298.ge7eed54
^ permalink raw reply [flat|nested] 2+ messages in thread* [PATCH v6 15/21] scripts/gdb: Add internal helper and convenience function to retrieve thread_info
2013-10-28 8:58 [PATCH v6 00/21] Add gdb python scripts as kernel debugging helpers Jan Kiszka
@ 2013-10-28 8:58 ` Jan Kiszka
0 siblings, 0 replies; 2+ messages in thread
From: Jan Kiszka @ 2013-10-28 8:58 UTC (permalink / raw)
To: Andrew Morton, linux-kernel
Cc: Jason Wessel, kgdb-bugreport, Andi Kleen, Tom Tromey,
Ben Widawsky, Borislav Petkov, Tatiana Al-Chueyr Martins,
Tony Luck, Fenghua Yu, linux-ia64
Add the internal helper get_thread_info that calculates the thread_info
from a given task variable. Also export this service as a convenience
function.
Note: ia64 version is untested.
CC: Tony Luck <tony.luck@intel.com>
CC: Fenghua Yu <fenghua.yu@intel.com>
CC: linux-ia64@vger.kernel.org
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
scripts/gdb/linux/tasks.py | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/scripts/gdb/linux/tasks.py b/scripts/gdb/linux/tasks.py
index 13bb97c..63cd6c5 100644
--- a/scripts/gdb/linux/tasks.py
+++ b/scripts/gdb/linux/tasks.py
@@ -71,3 +71,38 @@ return that task_struct variable which PID matches."""
LxTaskByPidFunc()
+
+
+thread_info_type = utils.CachedType("struct thread_info")
+
+ia64_task_size = None
+
+
+def get_thread_info(task):
+ global thread_info_type
+ thread_info_ptr_type = thread_info_type.get_type().pointer()
+ if utils.is_target_arch("ia64"):
+ global ia64_task_size
+ if ia64_task_size is None:
+ ia64_task_size = gdb.parse_and_eval("sizeof(struct task_struct)")
+ thread_info_addr = task.address + ia64_task_size
+ thread_info = thread_info_addr.cast(thread_info_ptr_type)
+ else:
+ thread_info = task['stack'].cast(thread_info_ptr_type)
+ return thread_info.dereference()
+
+
+class LxThreadInfoFunc (gdb.Function):
+ """Calculate Linux thread_info from task variable.
+
+$lx_thread_info(TASK): Given TASK, return the corresponding thread_info
+variable."""
+
+ def __init__(self):
+ super(LxThreadInfoFunc, self).__init__("lx_thread_info")
+
+ def invoke(self, task):
+ return get_thread_info(task)
+
+
+LxThreadInfoFunc()
--
1.8.1.1.298.ge7eed54
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-10-28 8:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-28 8:58 [PATCH v6 00/21] Add gdb python scripts as kernel debugging helpers Jan Kiszka
2013-10-28 8:58 ` [PATCH v6 15/21] scripts/gdb: Add internal helper and convenience function to retrieve thread_info Jan Kiszka
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox