| # Kconfig - debug configuration options |
| |
| # |
| # Copyright (c) 2015 Wind River Systems, Inc. |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| # |
| |
| menu "Debugging Options" |
| |
| config DEBUG |
| bool "Build kernel with debugging enabled" |
| default n |
| help |
| Build a kernel suitable for debugging. Right now, this option |
| only disables optimization, more debugging variants can be selected |
| from here to allow more debugging. |
| |
| config STACK_USAGE |
| bool "Generate stack usage information" |
| default n |
| help |
| Generate an extra file that specifies the maximum amount of stack used, |
| on a per-function basis. |
| |
| config STACK_SENTINEL |
| bool "Enable stack sentinel" |
| select THREAD_STACK_INFO |
| default n |
| help |
| Store a magic value at the lowest addresses of a thread's stack. |
| Periodically check that this value is still present and kill the |
| thread gracefully if it isn't. This is currently checked in four |
| places: |
| |
| 1) Upon any context switch for the outgoing thread |
| 2) Any hardware interrupt that doesn't context switch, the check is |
| performed for the interrupted thread |
| 3) When a thread returns from its entry point |
| 4) When a thread calls k_yield() but doesn't context switch |
| |
| This feature doesn't prevent corruption and the system may be |
| in an unusable state. However, given the bizarre behavior associated |
| with stack overflows, knowledge that this is happening is very |
| useful. |
| |
| This feature is intended for those systems which lack hardware support |
| for stack overflow protection, or have insufficient system resources |
| to use that hardware support. |
| |
| config PRINTK |
| bool |
| prompt "Send printk() to console" |
| depends on CONSOLE_HAS_DRIVER |
| default y |
| help |
| This option directs printk() debugging output to the supported |
| console device, rather than suppressing the generation |
| of printk() output entirely. Output is sent immediately, without |
| any mutual exclusion or buffering. |
| |
| config PRINTK_BUFFER_SIZE |
| int |
| prompt "printk() buffer size" |
| depends on PRINTK |
| depends on USERSPACE |
| default 32 |
| help |
| If userspace is enabled, printk() calls are buffered so that we do |
| not have to make a system call for every character emitted. Specify |
| the size of this buffer. |
| |
| config STDOUT_CONSOLE |
| bool |
| prompt "Send stdout to console" |
| depends on CONSOLE_HAS_DRIVER |
| default n |
| help |
| This option directs standard output (e.g. printf) to the console |
| device, rather than suppressing it entirely. |
| |
| config EARLY_CONSOLE |
| bool |
| prompt "Send stdout at the earliest stage possible" |
| default n |
| help |
| This option will enable stdout as early as possible, for debugging |
| purpose. For instance, in case of STDOUT_CONSOLE being set it will |
| initialize its driver earlier than normal, in order to get the stdout |
| sent through the console at the earliest stage possible. |
| |
| config ASSERT |
| bool |
| prompt "Enable __ASSERT() macro" |
| default n |
| help |
| This enables the __ASSERT() macro in the kernel code. If an assertion |
| fails, the calling thread is put on an infinite tight loop. Since |
| enabling this adds a significant footprint, it should only be enabled |
| in a non-production system. |
| |
| config ASSERT_LEVEL |
| int |
| prompt "__ASSERT() level" |
| default 2 |
| range 0 2 |
| depends on ASSERT |
| help |
| This option specifies the assertion level used by the __ASSERT() |
| macro. It can be set to one of three possible values: |
| |
| Level 0: off |
| Level 1: on + warning in every file that includes __assert.h |
| Level 2: on + no warning |
| |
| config DEBUG_TRACING_KERNEL_OBJECTS |
| bool "Kernel object tracing (deprecated)" |
| select OBJECT_TRACING |
| default n |
| help |
| For backward compatibility only |
| |
| config OBJECT_TRACING |
| bool |
| prompt "Kernel object tracing" |
| default n |
| help |
| This option enable the feature for tracing kernel objects. This option |
| is for debug purposes and increases the memory footprint of the kernel. |
| |
| config OVERRIDE_FRAME_POINTER_DEFAULT |
| bool |
| prompt "Override compiler defaults for -fomit-frame-pointer" |
| default n |
| help |
| Omitting the frame pointer prevents the compiler from putting the stack |
| frame pointer into a register. Saves a few instructions in function |
| prologues/epilogues and frees up a register for general-purpose use, |
| which can provide good performance improvements on register-constrained |
| architectures like x86. On some architectures (including x86) omitting |
| frame pointers impedes debugging as local variables are harder to |
| locate. At -O1 and above gcc will enable -fomit-frame-pointer |
| automatically but only if the architecture does not require if for |
| effective debugging. |
| |
| Choose Y if you want to override the default frame pointer behavior |
| of your compiler, otherwise choose N. |
| |
| config OMIT_FRAME_POINTER |
| bool |
| prompt "Omit frame pointer" |
| default n |
| depends on OVERRIDE_FRAME_POINTER_DEFAULT |
| help |
| Choose Y for best performance. On some architectures (including x86) |
| this will favor code size and performance over debugability. |
| |
| Choose N in you wish to retain the frame pointer. This option may |
| be useful if your application uses runtime backtracing and does not |
| support parsing unwind tables. |
| |
| If unsure, disable OVERRIDE_FRAME_POINTER_DEFAULT to allow the compiler |
| to adopt sensible defaults for your architecture. |
| |
| # |
| # Generic Debugging Options |
| # |
| config DEBUG_INFO |
| bool "Enable system debugging information" |
| default n |
| depends on X86 |
| help |
| This option enables the addition of various information that can be used |
| by debuggers in debugging the system. |
| |
| NOTE: Does not currently work with the x86 IAMCU ABI. |
| |
| # |
| # Miscellaneous debugging options |
| # |
| |
| config OPENOCD_SUPPORT |
| bool |
| prompt "OpenOCD support [EXPERIMENTAL]" |
| default n |
| select THREAD_MONITOR |
| help |
| This option exports an array of offsets to kernel structs, used by |
| OpenOCD to determine the state of running threads. (This option |
| selects CONFIG_THREAD_MONITOR, so all of its caveats are implied.) |
| |
| endmenu |