bc56804a49
Add back a feature that was available in the old heap implementation in release/v2.1 and earlier: keep track of which task allocates each block from the heap. The task handle is conditionally added as another word in the heap poisoning header under this configuration option CONFIG_HEAP_TASK_TRACKING. To allow custom monitoring and debugging code to be added, add helper functions in multi_heap.c and multi_heap_poisoning.c to provide access to information in the block headers.
49 lines
1.6 KiB
Text
49 lines
1.6 KiB
Text
menu "Heap memory debugging"
|
|
|
|
choice HEAP_CORRUPTION_DETECTION
|
|
prompt "Heap corruption detection"
|
|
default HEAP_POISONING_DISABLED
|
|
help
|
|
Enable heap poisoning features to detect heap corruption caused by out-of-bounds access to heap memory.
|
|
|
|
See the "Heap Memory Debugging" page of the IDF documentation
|
|
for a description of each level of heap corruption detection.
|
|
|
|
config HEAP_POISONING_DISABLED
|
|
bool "Basic (no poisoning)"
|
|
config HEAP_POISONING_LIGHT
|
|
bool "Light impact"
|
|
config HEAP_POISONING_COMPREHENSIVE
|
|
bool "Comprehensive"
|
|
endchoice
|
|
|
|
config HEAP_TRACING
|
|
bool "Enable heap tracing"
|
|
help
|
|
Enables the heap tracing API defined in esp_heap_trace.h.
|
|
|
|
This function causes a moderate increase in IRAM code side and a minor increase in heap function
|
|
(malloc/free/realloc) CPU overhead, even when the tracing feature is not used. So it's best to keep it disabled
|
|
unless tracing is being used.
|
|
|
|
config HEAP_TRACING_STACK_DEPTH
|
|
int "Heap tracing stack depth"
|
|
range 0 10
|
|
default 2
|
|
depends on HEAP_TRACING
|
|
help
|
|
Number of stack frames to save when tracing heap operation callers.
|
|
|
|
More stack frames uses more memory in the heap trace buffer (and slows down allocation), but
|
|
can provide useful information.
|
|
|
|
config HEAP_TASK_TRACKING
|
|
bool "Enable heap task tracking"
|
|
depends on !HEAP_POISONING_DISABLED
|
|
help
|
|
Enables tracking the task responsible for each heap allocation.
|
|
|
|
This function depends on heap poisoning being enabled and adds four more bytes of overhead for each block
|
|
allocated.
|
|
|
|
endmenu
|