Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

menu "Kernel hacking"

source "lib/Kconfig.debug"

config CONFIG_DEBUG_DECOMPRESS_KERNEL
	bool "Using serial port during decompressing kernel"
	depends on CONFIG_DEBUG_KERNEL
	default n
	help
	  If you say Y here you will confirm the start and the end of
	  decompressing Linux seeing "Uncompressing Linux... " and
	  "Ok, booting the kernel.\n" on console.

config CONFIG_TEST_MISALIGNMENT_HANDLER
	bool "Run tests on the misalignment handler"
	depends on CONFIG_DEBUG_KERNEL
	default n
	help
	  If you say Y here the kernel will execute a list of misaligned memory
	  accesses to make sure the misalignment handler deals them with
	  correctly.  If it does not, the kernel will throw a CONFIG_BUG.

config CONFIG_KPROBES
	bool "Kprobes"
	depends on CONFIG_DEBUG_KERNEL
	help
	  Kprobes allows you to trap at almost any kernel address and
	  execute a callback function.  register_kprobe() establishes
	  a probepoint and specifies the callback.  Kprobes is useful
	  for kernel debugging, non-intrusive instrumentation and testing.
	  If in doubt, say "N".

config CONFIG_GDBSTUB
	bool "Remote GDB kernel debugging"
	depends on CONFIG_DEBUG_KERNEL && DEPRECATED
	select CONFIG_DEBUG_INFO
	select CONFIG_FRAME_POINTER
	help
	  If you say Y here, it will be possible to remotely debug the kernel
	  using gdb. This enlarges your kernel ELF image disk size by several
	  megabytes and requires a machine with more than 16 MB, better 32 MB
	  RAM to avoid excessive linking time. This is only useful for kernel
	  hackers. If unsure, say N.

	  This is deprecated in favour of CONFIG_KGDB and will be removed in a later
	  version.

config CONFIG_GDBSTUB_IMMEDIATE
	bool "Break into GDB stub immediately"
	depends on CONFIG_GDBSTUB
	help
	  If you say Y here, GDB stub will break into the program as soon as
	  possible, leaving the program counter at the beginning of
	  start_kernel() in init/main.c.

config CONFIG_GDBSTUB_ALLOW_SINGLE_STEP
	bool "Allow software single-stepping in GDB stub"
	depends on CONFIG_GDBSTUB && !CONFIG_SMP && !CONFIG_PREEMPT
	help
	  Allow GDB stub to perform software single-stepping through the
	  kernel.  This doesn't work very well on CONFIG_SMP or preemptible kernels as
	  it uses temporary breakpoints to emulate single-stepping.

config CONFIG_GDB_CONSOLE
	bool "Console output to GDB"
	depends on CONFIG_GDBSTUB
	help
	  If you are using GDB for remote debugging over a serial port and
	  would like kernel messages to be formatted into GDB $O packets so
	  that GDB prints them as program output, say 'Y'.

config CONFIG_GDBSTUB_DEBUGGING
	bool "Debug GDB stub by messages to serial port"
	depends on CONFIG_GDBSTUB
	help
	  This causes debugging messages to be displayed at various points
	  during execution of the GDB stub routines. Such messages will be
	  displayed on ttyS0 if that isn't the GDB stub's port, or ttySM0
	  otherwise.

config CONFIG_GDBSTUB_DEBUG_ENTRY
	bool "Debug GDB stub entry"
	depends on CONFIG_GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about entry to or exit
	  from the main GDB stub routine.

config CONFIG_GDBSTUB_DEBUG_PROTOCOL
	bool "Debug GDB stub protocol"
	depends on CONFIG_GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about the GDB remote
	  protocol messages generated exchanged with GDB.

config CONFIG_GDBSTUB_DEBUG_IO
	bool "Debug GDB stub I/O"
	depends on CONFIG_GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about GDB stub's
	  low-level I/O.

config CONFIG_GDBSTUB_DEBUG_BREAKPOINT
	bool "Debug GDB stub breakpoint management"
	depends on CONFIG_GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about GDB stub's
	  breakpoint management.

choice
	prompt "GDB stub port"
	default CONFIG_GDBSTUB_ON_TTYSM0
	depends on CONFIG_GDBSTUB
	help
	  Select the serial port used for GDB-stub.

config CONFIG_GDBSTUB_ON_TTYSM0
	bool "/dev/ttySM0 [SIF0]"
	depends on CONFIG_MN10300_TTYSM0
	select CONFIG_GDBSTUB_ON_TTYSMx

config CONFIG_GDBSTUB_ON_TTYSM1
	bool "/dev/ttySM1 [SIF1]"
	depends on CONFIG_MN10300_TTYSM1
	select CONFIG_GDBSTUB_ON_TTYSMx

config CONFIG_GDBSTUB_ON_TTYSM2
	bool "/dev/ttySM2 [SIF2]"
	depends on CONFIG_MN10300_TTYSM2
	select CONFIG_GDBSTUB_ON_TTYSMx

config CONFIG_GDBSTUB_ON_TTYS0
	bool "/dev/ttyS0"
	select CONFIG_GDBSTUB_ON_TTYSx

config CONFIG_GDBSTUB_ON_TTYS1
	bool "/dev/ttyS1"
	select CONFIG_GDBSTUB_ON_TTYSx

endchoice

config CONFIG_GDBSTUB_ON_TTYSMx
	bool
	depends on CONFIG_GDBSTUB_ON_TTYSM0 || CONFIG_GDBSTUB_ON_TTYSM1 || CONFIG_GDBSTUB_ON_TTYSM2
	default y

config CONFIG_GDBSTUB_ON_TTYSx
	bool
	depends on CONFIG_GDBSTUB_ON_TTYS0 || CONFIG_GDBSTUB_ON_TTYS1
	default y

endmenu

config CONFIG_KERNEL_DEBUGGER
	def_bool y
	depends on CONFIG_GDBSTUB || CONFIG_KGDB