166 lines
5.6 KiB
Plaintext
166 lines
5.6 KiB
Plaintext
|
# SPDX-License-Identifier: GPL-2.0-only
|
||
|
|
||
|
config HAVE_ARCH_KGDB
|
||
|
bool
|
||
|
|
||
|
# set if architecture has the its kgdb_arch_handle_qxfer_pkt
|
||
|
# function to enable gdb stub to address XML packet sent from GDB.
|
||
|
config HAVE_ARCH_KGDB_QXFER_PKT
|
||
|
bool
|
||
|
|
||
|
menuconfig KGDB
|
||
|
bool "KGDB: kernel debugger"
|
||
|
depends on HAVE_ARCH_KGDB
|
||
|
depends on DEBUG_KERNEL
|
||
|
help
|
||
|
If you say Y here, it will be possible to remotely debug the
|
||
|
kernel using gdb. It is recommended but not required, that
|
||
|
you also turn on the kernel config option
|
||
|
CONFIG_FRAME_POINTER to aid in producing more reliable stack
|
||
|
backtraces in the external debugger. Documentation of
|
||
|
kernel debugger is available at http://kgdb.sourceforge.net
|
||
|
as well as in Documentation/dev-tools/kgdb.rst. If
|
||
|
unsure, say N.
|
||
|
|
||
|
if KGDB
|
||
|
|
||
|
config KGDB_HONOUR_BLOCKLIST
|
||
|
bool "KGDB: use kprobe blocklist to prohibit unsafe breakpoints"
|
||
|
depends on HAVE_KPROBES
|
||
|
depends on MODULES
|
||
|
select KPROBES
|
||
|
default y
|
||
|
help
|
||
|
If set to Y the debug core will use the kprobe blocklist to
|
||
|
identify symbols where it is unsafe to set breakpoints.
|
||
|
In particular this disallows instrumentation of functions
|
||
|
called during debug trap handling and thus makes it very
|
||
|
difficult to inadvertently provoke recursive trap handling.
|
||
|
|
||
|
If unsure, say Y.
|
||
|
|
||
|
config KGDB_SERIAL_CONSOLE
|
||
|
tristate "KGDB: use kgdb over the serial console"
|
||
|
select CONSOLE_POLL
|
||
|
select MAGIC_SYSRQ
|
||
|
depends on TTY && HW_CONSOLE
|
||
|
default y
|
||
|
help
|
||
|
Share a serial console with kgdb. Sysrq-g must be used
|
||
|
to break in initially.
|
||
|
|
||
|
config KGDB_TESTS
|
||
|
bool "KGDB: internal test suite"
|
||
|
default n
|
||
|
help
|
||
|
This is a kgdb I/O module specifically designed to test
|
||
|
kgdb's internal functions. This kgdb I/O module is
|
||
|
intended to for the development of new kgdb stubs
|
||
|
as well as regression testing the kgdb internals.
|
||
|
See the drivers/misc/kgdbts.c for the details about
|
||
|
the tests. The most basic of this I/O module is to boot
|
||
|
a kernel boot arguments "kgdbwait kgdbts=V1F100"
|
||
|
|
||
|
config KGDB_TESTS_ON_BOOT
|
||
|
bool "KGDB: Run tests on boot"
|
||
|
depends on KGDB_TESTS
|
||
|
default n
|
||
|
help
|
||
|
Run the kgdb tests on boot up automatically without the need
|
||
|
to pass in a kernel parameter
|
||
|
|
||
|
config KGDB_TESTS_BOOT_STRING
|
||
|
string "KGDB: which internal kgdb tests to run"
|
||
|
depends on KGDB_TESTS_ON_BOOT
|
||
|
default "V1F100"
|
||
|
help
|
||
|
This is the command string to send the kgdb test suite on
|
||
|
boot. See the drivers/misc/kgdbts.c for detailed
|
||
|
information about other strings you could use beyond the
|
||
|
default of V1F100.
|
||
|
|
||
|
config KGDB_LOW_LEVEL_TRAP
|
||
|
bool "KGDB: Allow debugging with traps in notifiers"
|
||
|
depends on X86 || MIPS
|
||
|
default n
|
||
|
help
|
||
|
This will add an extra call back to kgdb for the breakpoint
|
||
|
exception handler which will allow kgdb to step through a
|
||
|
notify handler.
|
||
|
|
||
|
config KGDB_KDB
|
||
|
bool "KGDB_KDB: include kdb frontend for kgdb"
|
||
|
default n
|
||
|
help
|
||
|
KDB frontend for kernel
|
||
|
|
||
|
config KDB_DEFAULT_ENABLE
|
||
|
hex "KDB: Select kdb command functions to be enabled by default"
|
||
|
depends on KGDB_KDB
|
||
|
default 0x1
|
||
|
help
|
||
|
Specifiers which kdb commands are enabled by default. This may
|
||
|
be set to 1 or 0 to enable all commands or disable almost all
|
||
|
commands.
|
||
|
|
||
|
Alternatively the following bitmask applies:
|
||
|
|
||
|
0x0002 - allow arbitrary reads from memory and symbol lookup
|
||
|
0x0004 - allow arbitrary writes to memory
|
||
|
0x0008 - allow current register state to be inspected
|
||
|
0x0010 - allow current register state to be modified
|
||
|
0x0020 - allow passive inspection (backtrace, process list, lsmod)
|
||
|
0x0040 - allow flow control management (breakpoint, single step)
|
||
|
0x0080 - enable signalling of processes
|
||
|
0x0100 - allow machine to be rebooted
|
||
|
|
||
|
The config option merely sets the default at boot time. Both
|
||
|
issuing 'echo X > /sys/module/kdb/parameters/cmd_enable' or
|
||
|
setting with kdb.cmd_enable=X kernel command line option will
|
||
|
override the default settings.
|
||
|
|
||
|
config KDB_KEYBOARD
|
||
|
bool "KGDB_KDB: keyboard as input device"
|
||
|
depends on VT && KGDB_KDB
|
||
|
default n
|
||
|
help
|
||
|
KDB can use a PS/2 type keyboard for an input device
|
||
|
|
||
|
config KDB_CONTINUE_CATASTROPHIC
|
||
|
int "KDB: continue after catastrophic errors"
|
||
|
depends on KGDB_KDB
|
||
|
default "0"
|
||
|
help
|
||
|
This integer controls the behaviour of kdb when the kernel gets a
|
||
|
catastrophic error, i.e. for a panic or oops.
|
||
|
When KDB is active and a catastrophic error occurs, nothing extra
|
||
|
will happen until you type 'go'.
|
||
|
CONFIG_KDB_CONTINUE_CATASTROPHIC == 0 (default). The first time
|
||
|
you type 'go', you will be warned by kdb. The secend time you type
|
||
|
'go', KDB tries to continue. No guarantees that the
|
||
|
kernel is still usable in this situation.
|
||
|
CONFIG_KDB_CONTINUE_CATASTROPHIC == 1. KDB tries to continue.
|
||
|
No guarantees that the kernel is still usable in this situation.
|
||
|
CONFIG_KDB_CONTINUE_CATASTROPHIC == 2. KDB forces a reboot.
|
||
|
If you are not sure, say 0.
|
||
|
|
||
|
config ARCH_HAS_EARLY_DEBUG
|
||
|
bool
|
||
|
default n
|
||
|
help
|
||
|
If an architecture can definitely handle entering the debugger
|
||
|
when early_param's are parsed then it select this config.
|
||
|
Otherwise, if "kgdbwait" is passed on the kernel command line it
|
||
|
won't actually be processed until dbg_late_init() just after the
|
||
|
call to kgdb_arch_late() is made.
|
||
|
|
||
|
NOTE: Even if this isn't selected by an architecture we will
|
||
|
still try to register kgdb to handle breakpoints and crashes
|
||
|
when early_param's are parsed, we just won't act on the
|
||
|
"kgdbwait" parameter until dbg_late_init(). If you get a
|
||
|
crash and try to drop into kgdb somewhere between these two
|
||
|
places you might or might not end up being able to use kgdb
|
||
|
depending on exactly how far along the architecture has initted.
|
||
|
|
||
|
endif # KGDB
|