diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-21 14:08:05 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-21 14:08:05 -0400 |
| commit | 90b9a32d8f441369b2f97a765d2d957b531eb653 (patch) | |
| tree | 3146d251a983ba12226e75c121613de6f051af8b | |
| parent | 8b108c609adefd98577c35f0a41497a610041a6c (diff) | |
| parent | 4402c153cb9c549cd21d6007ef0dfac50c8d148d (diff) | |
Merge branch 'kdb-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb
* 'kdb-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb: (25 commits)
kdb,debug_core: Allow the debug core to receive a panic notification
MAINTAINERS: update kgdb, kdb, and debug_core info
debug_core,kdb: Allow the debug core to process a recursive debug entry
printk,kdb: capture printk() when in kdb shell
kgdboc,kdb: Allow kdb to work on a non open console port
kgdb: Add the ability to schedule a breakpoint via a tasklet
mips,kgdb: kdb low level trap catch and stack trace
powerpc,kgdb: Introduce low level trap catching
x86,kgdb: Add low level debug hook
kgdb: remove post_primary_code references
kgdb,docs: Update the kgdb docs to include kdb
kgdboc,keyboard: Keyboard driver for kdb with kgdb
kgdb: gdb "monitor" -> kdb passthrough
sparc,sunzilog: Add console polling support for sunzilog serial driver
sh,sh-sci: Use NO_POLL_CHAR in the SCIF polled console code
kgdb,8250,pl011: Return immediately from console poll
kgdb: core changes to support kdb
kdb: core for kgdb back end (2 of 2)
kdb: core for kgdb back end (1 of 2)
kgdb,blackfin: Add in kgdb_arch_set_pc for blackfin
...
51 files changed, 9240 insertions, 2016 deletions
diff --git a/Documentation/DocBook/kgdb.tmpl b/Documentation/DocBook/kgdb.tmpl index 5cff41a5fa7..55f12ac37ac 100644 --- a/Documentation/DocBook/kgdb.tmpl +++ b/Documentation/DocBook/kgdb.tmpl | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | <book id="kgdbOnLinux"> | 5 | <book id="kgdbOnLinux"> |
| 6 | <bookinfo> | 6 | <bookinfo> |
| 7 | <title>Using kgdb and the kgdb Internals</title> | 7 | <title>Using kgdb, kdb and the kernel debugger internals</title> |
| 8 | 8 | ||
| 9 | <authorgroup> | 9 | <authorgroup> |
| 10 | <author> | 10 | <author> |
| @@ -17,33 +17,8 @@ | |||
| 17 | </affiliation> | 17 | </affiliation> |
| 18 | </author> | 18 | </author> |
| 19 | </authorgroup> | 19 | </authorgroup> |
| 20 | |||
| 21 | <authorgroup> | ||
| 22 | <author> | ||
| 23 | <firstname>Tom</firstname> | ||
| 24 | <surname>Rini</surname> | ||
| 25 | <affiliation> | ||
| 26 | <address> | ||
| 27 | <email>trini@kernel.crashing.org</email> | ||
| 28 | </address> | ||
| 29 | </affiliation> | ||
| 30 | </author> | ||
| 31 | </authorgroup> | ||
| 32 | |||
| 33 | <authorgroup> | ||
| 34 | <author> | ||
| 35 | <firstname>Amit S.</firstname> | ||
| 36 | <surname>Kale</surname> | ||
| 37 | <affiliation> | ||
| 38 | <address> | ||
| 39 | <email>amitkale@linsyssoft.com</email> | ||
| 40 | </address> | ||
| 41 | </affiliation> | ||
| 42 | </author> | ||
| 43 | </authorgroup> | ||
| 44 | |||
| 45 | <copyright> | 20 | <copyright> |
| 46 | <year>2008</year> | 21 | <year>2008,2010</year> |
| 47 | <holder>Wind River Systems, Inc.</holder> | 22 | <holder>Wind River Systems, Inc.</holder> |
| 48 | </copyright> | 23 | </copyright> |
| 49 | <copyright> | 24 | <copyright> |
| @@ -69,41 +44,76 @@ | |||
| 69 | <chapter id="Introduction"> | 44 | <chapter id="Introduction"> |
| 70 | <title>Introduction</title> | 45 | <title>Introduction</title> |
| 71 | <para> | 46 | <para> |
| 72 | kgdb is a source level debugger for linux kernel. It is used along | 47 | The kernel has two different debugger front ends (kdb and kgdb) |
| 73 | with gdb to debug a linux kernel. The expectation is that gdb can | 48 | which interface to the debug core. It is possible to use either |
| 74 | be used to "break in" to the kernel to inspect memory, variables | 49 | of the debugger front ends and dynamically transition between them |
| 75 | and look through call stack information similar to what an | 50 | if you configure the kernel properly at compile and runtime. |
| 76 | application developer would use gdb for. It is possible to place | 51 | </para> |
| 77 | breakpoints in kernel code and perform some limited execution | 52 | <para> |
| 78 | stepping. | 53 | Kdb is simplistic shell-style interface which you can use on a |
| 54 | system console with a keyboard or serial console. You can use it | ||
| 55 | to inspect memory, registers, process lists, dmesg, and even set | ||
| 56 | breakpoints to stop in a certain location. Kdb is not a source | ||
| 57 | level debugger, although you can set breakpoints and execute some | ||
| 58 | basic kernel run control. Kdb is mainly aimed at doing some | ||
| 59 | analysis to aid in development or diagnosing kernel problems. You | ||
| 60 | can access some symbols by name in kernel built-ins or in kernel | ||
| 61 | modules if the code was built | ||
| 62 | with <symbol>CONFIG_KALLSYMS</symbol>. | ||
| 63 | </para> | ||
| 64 | <para> | ||
| 65 | Kgdb is intended to be used as a source level debugger for the | ||
| 66 | Linux kernel. It is used along with gdb to debug a Linux kernel. | ||
| 67 | The expectation is that gdb can be used to "break in" to the | ||
| 68 | kernel to inspect memory, variables and look through call stack | ||
| 69 | information similar to the way an application developer would use | ||
| 70 | gdb to debug an application. It is possible to place breakpoints | ||
| 71 | in kernel code and perform some limited execution stepping. | ||
| 79 | </para> | 72 | </para> |
| 80 | <para> | 73 | <para> |
| 81 | Two machines are required for using kgdb. One of these machines is a | 74 | Two machines are required for using kgdb. One of these machines is |
| 82 | development machine and the other is a test machine. The kernel | 75 | a development machine and the other is the target machine. The |
| 83 | to be debugged runs on the test machine. The development machine | 76 | kernel to be debugged runs on the target machine. The development |
| 84 | runs an instance of gdb against the vmlinux file which contains | 77 | machine runs an instance of gdb against the vmlinux file which |
| 85 | the symbols (not boot image such as bzImage, zImage, uImage...). | 78 | contains the symbols (not boot image such as bzImage, zImage, |
| 86 | In gdb the developer specifies the connection parameters and | 79 | uImage...). In gdb the developer specifies the connection |
| 87 | connects to kgdb. The type of connection a developer makes with | 80 | parameters and connects to kgdb. The type of connection a |
| 88 | gdb depends on the availability of kgdb I/O modules compiled as | 81 | developer makes with gdb depends on the availability of kgdb I/O |
| 89 | builtin's or kernel modules in the test machine's kernel. | 82 | modules compiled as built-ins or loadable kernel modules in the test |
| 83 | machine's kernel. | ||
| 90 | </para> | 84 | </para> |
| 91 | </chapter> | 85 | </chapter> |
| 92 | <chapter id="CompilingAKernel"> | 86 | <chapter id="CompilingAKernel"> |
| 93 | <title>Compiling a kernel</title> | 87 | <title>Compiling a kernel</title> |
| 88 | <para> | ||
| 89 | <itemizedlist> | ||
| 90 | <listitem><para>In order to enable compilation of kdb, you must first enable kgdb.</para></listitem> | ||
| 91 | <listitem><para>The kgdb test compile options are described in the kgdb test suite chapter.</para></listitem> | ||
| 92 | </itemizedlist> | ||
| 93 | </para> | ||
| 94 | <sect1 id="CompileKGDB"> | ||
| 95 | <title>Kernel config options for kgdb</title> | ||
| 94 | <para> | 96 | <para> |
