mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
docs/en: update heap debugging guide for tracing on RISC-V architecture
This commit is contained in:
parent
d5cc79db48
commit
772a17bb3a
@ -213,21 +213,35 @@ An example::
|
|||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
The output from the heap trace will look something like this::
|
The output from the heap trace will look something like this:
|
||||||
|
|
||||||
2 allocations trace (100 entry buffer)
|
.. only:: CONFIG_IDF_TARGET_ARCH_XTENSA
|
||||||
32 bytes (@ 0x3ffaf214) allocated CPU 0 ccount 0x2e9b7384 caller 0x400d276d:0x400d27c1
|
|
||||||
0x400d276d: leak_some_memory at /path/to/idf/examples/get-started/blink/main/./blink.c:27
|
|
||||||
|
|
||||||
0x400d27c1: blink_task at /path/to/idf/examples/get-started/blink/main/./blink.c:52
|
::
|
||||||
|
|
||||||
8 bytes (@ 0x3ffaf804) allocated CPU 0 ccount 0x2e9b79c0 caller 0x400d2776:0x400d27c1
|
2 allocations trace (100 entry buffer)
|
||||||
0x400d2776: leak_some_memory at /path/to/idf/examples/get-started/blink/main/./blink.c:29
|
32 bytes (@ 0x3ffaf214) allocated CPU 0 ccount 0x2e9b7384 caller 0x400d276d:0x400d27c1
|
||||||
|
0x400d276d: leak_some_memory at /path/to/idf/examples/get-started/blink/main/./blink.c:27
|
||||||
|
|
||||||
0x400d27c1: blink_task at /path/to/idf/examples/get-started/blink/main/./blink.c:52
|
0x400d27c1: blink_task at /path/to/idf/examples/get-started/blink/main/./blink.c:52
|
||||||
|
|
||||||
40 bytes 'leaked' in trace (2 allocations)
|
8 bytes (@ 0x3ffaf804) allocated CPU 0 ccount 0x2e9b79c0 caller 0x400d2776:0x400d27c1
|
||||||
total allocations 2 total frees 0
|
0x400d2776: leak_some_memory at /path/to/idf/examples/get-started/blink/main/./blink.c:29
|
||||||
|
|
||||||
|
0x400d27c1: blink_task at /path/to/idf/examples/get-started/blink/main/./blink.c:52
|
||||||
|
|
||||||
|
40 bytes 'leaked' in trace (2 allocations)
|
||||||
|
total allocations 2 total frees 0
|
||||||
|
|
||||||
|
.. only:: CONFIG_IDF_TARGET_ARCH_RISCV
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
2 allocations trace (100 entry buffer)
|
||||||
|
32 bytes (@ 0x3ffaf214) allocated CPU 0 ccount 0x2e9b7384 caller
|
||||||
|
8 bytes (@ 0x3ffaf804) allocated CPU 0 ccount 0x2e9b79c0 caller
|
||||||
|
40 bytes 'leaked' in trace (2 allocations)
|
||||||
|
total allocations 2 total frees 0
|
||||||
|
|
||||||
(Above example output is using :doc:`IDF Monitor </api-guides/tools/idf-monitor>` to automatically decode PC addresses to their source files & line number.)
|
(Above example output is using :doc:`IDF Monitor </api-guides/tools/idf-monitor>` to automatically decode PC addresses to their source files & line number.)
|
||||||
|
|
||||||
@ -235,14 +249,17 @@ The first line indicates how many allocation entries are in the buffer, compared
|
|||||||
|
|
||||||
In ``HEAP_TRACE_LEAKS`` mode, for each traced memory allocation which has not already been freed a line is printed with:
|
In ``HEAP_TRACE_LEAKS`` mode, for each traced memory allocation which has not already been freed a line is printed with:
|
||||||
|
|
||||||
- ``XX bytes`` is number of bytes allocated
|
.. list::
|
||||||
- ``@ 0x...`` is the heap address returned from malloc/calloc.
|
|
||||||
- ``CPU x`` is the CPU (0 or 1) running when the allocation was made.
|
|
||||||
- ``ccount 0x...`` is the CCOUNT (CPU cycle count) register value when the allocation was mode. Is different for CPU 0 vs CPU 1.
|
|
||||||
- ``caller 0x...`` gives the call stack of the call to malloc()/free(), as a list of PC addresses.
|
|
||||||
These can be decoded to source files and line numbers, as shown above.
|
|
||||||
|
|
||||||
The depth of the call stack recorded for each trace entry can be configured in the project configuration menu, under ``Heap Memory Debugging`` -> ``Enable heap tracing`` -> ``Heap tracing stack depth``. Up to 10 stack frames can be recorded for each allocation (the default is 2). Each additional stack frame increases the memory usage of each ``heap_trace_record_t`` record by eight bytes.
|
- ``XX bytes`` is number of bytes allocated
|
||||||
|
- ``@ 0x...`` is the heap address returned from malloc/calloc.
|
||||||
|
- ``CPU x`` is the CPU (0 or 1) running when the allocation was made.
|
||||||
|
- ``ccount 0x...`` is the CCOUNT (CPU cycle count) register value when the allocation was mode. Is different for CPU 0 vs CPU 1.
|
||||||
|
:CONFIG_IDF_TARGET_ARCH_XTENSA: - ``caller 0x...`` gives the call stack of the call to malloc()/free(), as a list of PC addresses. These can be decoded to source files and line numbers, as shown above.
|
||||||
|
|
||||||
|
.. only:: not CONFIG_IDF_TARGET_ARCH_RISCV
|
||||||
|
|
||||||
|
The depth of the call stack recorded for each trace entry can be configured in the project configuration menu, under ``Heap Memory Debugging`` -> ``Enable heap tracing`` -> ``Heap tracing stack depth``. Up to 10 stack frames can be recorded for each allocation (the default is 2). Each additional stack frame increases the memory usage of each ``heap_trace_record_t`` record by eight bytes.
|
||||||
|
|
||||||
Finally, the total number of 'leaked' bytes (bytes allocated but not freed while trace was running) is printed, and the total number of allocations this represents.
|
Finally, the total number of 'leaked' bytes (bytes allocated but not freed while trace was running) is printed, and the total number of allocations this represents.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user