Page 1 of 1

Apptrace Library | Can't Dump Trace Buffer to Host

Posted: Thu Mar 19, 2026 12:22 pm
by slazyhw
For a couple of days I try to get the Apptrace Library to work with my ESP32-S3. However, I still can't read out the trace buffer in post-mortem mode. I want to use the SystemView port for this.

The documentation says, that without the connection of a host, the apptrace module will operate in post-mortem mode. As soon as a host is connected, it will switch into streaming mode.

Here is my sdkconfig:

Code: Select all

CONFIG_APPTRACE_ENABLE=y
CONFIG_APPTRACE_DEST_JTAG=y
CONFIG_APPTRACE_TRAX_ENABLE=y
CONFIG_APPTRACE_LOCK_ENABLE=y
CONFIG_APPTRACE_ONPANIC_HOST_FLUSH_TMO=0
CONFIG_APPTRACE_POSTMORTEM_FLUSH_THRESH=0
CONFIG_APPTRACE_SV_ENABLE=y
CONFIG_APPTRACE_SV_TS_SOURCE_ESP_TIMER=y
CONFIG_APPTRACE_SV_MAX_TASKS=16
CONFIG_APPTRACE_SV_BUF_WAIT_TMO=0
CONFIG_APPTRACE_SV_EVT_OVERFLOW_ENABLE=y
CONFIG_APPTRACE_SV_EVT_ISR_ENTER_ENABLE=y
CONFIG_APPTRACE_SV_EVT_ISR_EXIT_ENABLE=y
CONFIG_APPTRACE_SV_EVT_ISR_TO_SCHED_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TASK_START_EXEC_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TASK_STOP_EXEC_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TASK_START_READY_ENABLE=y
CONFIG_APPTRACE_SV_EVT_TASK_STOP_READY_ENABLE=y
CONFIG_APPTRACE_SV_EVT_IDLE_ENABLE=y
What I've tried until now:

First of all, I wanted to test if my JTAG connection actually works. I used the streaming mode for this. I ran the newest version of openocd (07-07-2025) with the right target configuration:

Code: Select all

openocd -f .\esp32s3-builtin.cfg -c "adapter speed 20000"
After that, I connected over telnet to the openocd server:

Code: Select all

telnet localhost 4444
From there, I used the following command to start the trace module in streaming mode:

Code: Select all

esp sysview start file://core0.bin file://core1.bin 0 -1 -1
My firmware called the following function cyclically to flush FreeRTOS event data to the host:

Code: Select all

esp_sysview_flush(0);
This setup actually worked and I got trace data which I could open with SEGGER SystemView. The actual freeRTOS data was alright. However, the tracing slowed down my application significantly and the program often froze. This was due to the reason that in streaming mode the apptrace module will stop writing event data to the trace buffer as soon as it detects that the connected host didn't entirely read the prior data.

For my use case, I just want to flush data to the host when things go wrong or errors occur. This is why I wanted to try if the post-mortem mode works better for me.

I used the following command from openOCD to dump the current trace buffer to the host (for core 0):

Code: Select all

esp apptrace dump file://core0.bin 0 
With this call, I got the following error thrown:

Code: Select all

Info : Total trace memory: 16384 bytes
Info : Open file core.bin
App trace params: from 2 cores, size -1 bytes, stop_tmo -1 s, poll period 0 ms, wait_rst 0, skip 0 bytes
Warn : [esp32s3.cpu0] apptrace connection is lost. Re-connect.
Warn : [esp32s3.cpu1] apptrace connection is lost. Re-connect.
Error: Data timeout!
Error: Failed to poll target for trace data (-4)!
Tracing is STOPPED. Size is 0 of -1 @ nan (nan) KiB/s
Data: blocks incomplete 0, lost bytes: 0
Block read time [1000000000.000000..0.000000] ms
Block proc time [1000000000.000000..0.000000] ms
For this setup, I deleted the "esp_sysview_flush(0)" because I thought that the dump automatically retrieves the trace buffer without needing to manually flush.

Update: flush is not necessary, event data is forwarded to the hardware buffer automatically if enough data got buffered. However, manually flushed small amounts of data (for example one printf) are not recognized by the host on dump.

What could go wrong? Does "esp apptrace dump" only work for actual apptrace events and no sysview events? An alternative like "esp sysview dump" doesn't exist yet.

Update: Dump is only supported for apptrace and not sysview at the moment. Is there an alternative approach to read out sysview data in a post-mortem way?


Feel free to ask for any additional information. Thanks in advance for your help!

Re: Apptrace Library | Can't Dump Trace Buffer to Host

Posted: Fri Mar 20, 2026 9:00 am
by slazyhw
Another Update:

I reduced the number of handled freeRTOS events and also reduced the number of maximum supported tasks to 5. My JTAG speed is 20000. The data now arrives slower at the host, meaning the changes took the desired effect. However, it seems that the connection is still too slow.

I consequently get these logs over the console when I am connected over streaming mode (esp sysview start file://core0.bin file://core1.bin 0 -1 -1):

Code: Select all

[color=#FF0000]
E (0) esp_apptrace: Failed to swap to new block: 257
E (6) esp_apptrace: Failed to swap to new block: 257
E (11) esp_apptrace: Failed to swap to new block: 257
E (17) esp_apptrace: Failed to swap to new block: 257
E (23) esp_apptrace: Failed to swap to new block: 257
E (28) esp_apptrace: Failed to swap to new block: 257
E (34) esp_apptrace: Failed to swap to new block: 257
E (40) esp_apptrace: Failed to swap to new block: 257
E (46) esp_apptrace: Failed to swap to new block: 257
E (51) esp_apptrace: Failed to swap to new block: 257
E (57) esp_apptrace: Failed to swap to new block: 257
E (63) esp_apptrace: Failed to swap to new block: 257
E (69) esp_apptrace: Failed to swap to new block: 257
E (74) esp_apptrace: Failed to swap to new block: 257
E (80) esp_apptrace: Failed to swap to new block: 257
E (86) esp_apptrace: Failed to swap to new block: 257
E (91) esp_apptrace: Failed to swap to new block: 257
E (97) esp_apptrace: Failed to swap to new block: 257
E (103) esp_apptrace: Failed to swap to new block: 257
E (109) esp_apptrace: Failed to swap to new block: 257
E (115) esp_apptrace: Failed to swap to new block: 257
E (120) esp_apptrace: Failed to swap to new block: 257
E (126) esp_apptrace: Failed to swap to new block: 257
E (132) esp_apptrace: Failed to swap to new block: 257
E (138) esp_apptrace: Failed to swap to new block: 257
E (144) esp_apptrace: Failed to swap to new block: 257
E (149) esp_apptrace: Failed to swap to new block: 257
E (155) esp_apptrace: Failed to swap to new block: 257
E (161) esp_apptrace: Failed to swap to new block: 257
E (167) esp_apptrace: Failed to swap to new block: 257
E (173) esp_apptrace: Failed to swap to new block: 257
E (179) esp_apptrace: Failed to swap to new block: 257
E (184) esp_apptrace: Failed to swap to new block: 257
E (190) esp_apptrace: Failed to swap to new block: 257
E (196) esp_apptrace: Failed to swap to new block: 257
E (202) esp_apptrace: Failed to swap to new block: 257
E (208) esp_apptrace: Failed to swap to new block: 257
E (213) esp_apptrace: Failed to swap to new block: 257
E (219) esp_apptrace: Failed to swap to new block: 257
E (225) esp_apptrace: Failed to swap to new block: 257
E (1553) esp_apptrace: Failed to swap to new block: 257
E (1553) esp_apptrace: Failed to swap to new block: 257
E (1554) esp_apptrace: Failed to swap to new block: 257
E (934) esp_apptrace: Failed to swap to new block: 257
E (940) esp_apptrace: Failed to swap to new block: 257
E (946) esp_apptrace: Failed to swap to new block: 257
E (951) esp_apptrace: Failed to swap to new block: 257
E (957) esp_apptrace: Failed to swap to new block: 257
E (963) esp_apptrace: Failed to swap to new block: 257
E (969) esp_apptrace: Failed to swap to new block: 257
E (975) esp_apptrace: Failed to swap to new block: 257
E (981) esp_apptrace: Failed to swap to new block: 257
E (986) esp_apptrace: Failed to swap to new block: 257
E (992) esp_apptrace: Failed to swap to new block: 257
E (998) esp_apptrace: Failed to swap to new block: 257
E (1004) esp_apptrace: Failed to swap to new block: 257
E (1010) esp_apptrace: Failed to swap to new block: 257
E (1016) esp_apptrace: Failed to swap to new block: 257
E (1022) esp_apptrace: Failed to swap to new block: 257
E (1027) esp_apptrace: Failed to swap to new block: 257
E (1033) esp_apptrace: Failed to swap to new block: 257
E (1039) esp_apptrace: Failed to swap to new block: 257
E (1045) esp_apptrace: Failed to swap to new block: 257
E (1051) esp_apptrace: Failed to swap to new block: 257
E (1057) esp_apptrace: Failed to swap to new block: 257
E (1063) esp_apptrace: Failed to swap to new block: 257
E (1069) esp_apptrace: Failed to swap to new block: 257
E (1075) esp_apptrace: Failed to swap to new block: 257
E (1081) esp_apptrace: Failed to swap to new block: 257
E (1086) esp_apptrace: Failed to swap to new block: 257
E (1092) esp_apptrace: Failed to swap to new block: 257
E (1098) esp_apptrace: Failed to swap to new block: 257
E (1104) esp_apptrace: Failed to swap to new block: 257
E (1110) esp_apptrace: Failed to swap to new block: 257
E (1116) esp_apptrace: Failed to swap to new block: 257
E (1122) esp_apptrace: Failed to swap to new block: 257
E (1128) esp_apptrace: Failed to swap to new block: 257
E (1134) esp_apptrace: Failed to swap to new block: 257
E (1140) esp_apptrace: Failed to swap to new block: 257
E (1145) esp_apptrace: Failed to swap to new block: 257
E (1151) esp_apptrace: Failed to swap to new block: 257
E (1157) esp_apptrace: Failed to swap to new block: 257
E (1163) esp_apptrace: Failed to swap to new block: 257
E (1169) esp_apptrace: Failed to swap to new block: 257
E (1175) esp_apptrace: Failed to swap to new block: 257
E (1181) esp_apptrace: Failed to swap to new block: 257
E (1187) esp_apptrace: Failed to swap to new block: 257
E (1193) esp_apptrace: Failed to swap to new block: 257
E (2628) esp_apptrace: Failed to swap to new block: 257
E (2628) esp_apptrace: Failed to swap to new block: 257
E (3254) esp_apptrace: Failed to swap to new block: 257
E (2634) esp_apptrace: Failed to swap to new block: 257
E (3266) esp_apptrace: Failed to swap to new block: 257
E (2646) esp_apptrace: Failed to swap to new block: 257
E (2652) esp_apptrace: Failed to swap to new block: 257
E (2658) esp_apptrace: Failed to swap to new block: 257
E (2664) esp_apptrace: Failed to swap to new block: 257
E (2670) esp_apptrace: Failed to swap to new block: 257
E (2675) esp_apptrace: Failed to swap to new block: 257
E (2681) esp_apptrace: Failed to swap to new block: 257
E (2687) esp_apptrace: Failed to swap to new block: 257
E (2693) esp_apptrace: Failed to swap to new block: 257
E (2699) esp_apptrace: Failed to swap to new block: 257
E (2705) esp_apptrace: Failed to swap to new block: 257
E (2711) esp_apptrace: Failed to swap to new block: 257
E (2717) esp_apptrace: Failed to swap to new block: 257
E (2723) esp_apptrace: Failed to swap to new block: 257
E (2729) esp_apptrace: Failed to swap to new block: 257
E (2734) esp_apptrace: Failed to swap to new block: 257
E (2740) esp_apptrace: Failed to swap to new block: 257
E (2746) esp_apptrace: Failed to swap to new block: 257
E (2752) esp_apptrace: Failed to swap to new block: 257
E (2758) esp_apptrace: Failed to swap to new block: 257
E (2764) esp_apptrace: Failed to swap to new block: 257
E (2770) esp_apptrace: Failed to swap to new block: 257
E (2776) esp_apptrace: Failed to swap to new block: 257
E (2782) esp_apptrace: Failed to swap to new block: 257
E (2788) esp_apptrace: Failed to swap to new block: 257
E (2795) esp_apptrace: Failed to swap to new block: 257
W (2799) esp_apptrace: Failed to switch to another block in 4171 us!
E (2807) esp_apptrace: Failed to swap to new block: 257
W (2812) esp_apptrace: Failed to switch to another block in 5616 us!
E (2819) esp_apptrace: Failed to swap to new block: 257
W (2825) esp_apptrace: Failed to switch to another block in 5828 us!
E (2832) esp_apptrace: Failed to swap to new block: 257
W (2838) esp_apptrace: Failed to switch to another block in 5832 us!
E (2845) esp_apptrace: Failed to swap to new block: 257
W (2851) esp_apptrace: Failed to switch to another block in 5831 us!
E (2858) esp_apptrace: Failed to swap to new block: 257
W (2864) esp_apptrace: Failed to switch to another block in 5828 us!
E (2871) esp_apptrace: Failed to swap to new block: 257
W (2877) esp_apptrace: Failed to switch to another block in 5831 us!
E (2884) esp_apptrace: Failed to swap to new block: 257
W (2890) esp_apptrace: Failed to switch to another block in 5832 us!
E (2897) esp_apptrace: Failed to swap to new block: 257
W (2903) esp_apptrace: Failed to switch to another block in 5828 us!
E (2910) esp_apptrace: Failed to swap to new block: 257
W (2916) esp_apptrace: Failed to switch to another block in 5832 us!
E (2923) esp_apptrace: Failed to swap to new block: 257
W (2929) esp_apptrace: Failed to switch to another block in 5832 us!
E (2936) esp_apptrace: Failed to swap to new block: 257
W (2942) esp_apptrace: Failed to switch to another block in 5829 us!
E (2949) esp_apptrace: Failed to swap to new block: 257
W (2955) esp_apptrace: Failed to switch to another block in 5831 us!
E (2962) esp_apptrace: Failed to swap to new block: 257
W (2968) esp_apptrace: Failed to switch to another block in 5831 us!
E (2975) esp_apptrace: Failed to swap to new block: 257
W (2980) esp_apptrace: Failed to switch to another block in 5828 us!
E (2988) esp_apptrace: Failed to swap to new block: 257
W (2993) esp_apptrace: Failed to switch to another block in 5833 us!
E (3000) esp_apptrace: Failed to swap to new block: 257
W (3006) esp_apptrace: Failed to switch to another block in 5831 us!
E (3013) esp_apptrace: Failed to swap to new block: 257
W (3019) esp_apptrace: Failed to switch to another block in 5828 us!
E (3026) esp_apptrace: Failed to swap to new block: 257
W (3032) esp_apptrace: Failed to switch to another block in 5832 us!
E (3039) esp_apptrace: Failed to swap to new block: 257
W (3045) esp_apptrace: Failed to switch to another block in 5831 us!
E (3052) esp_apptrace: Failed to swap to new block: 257
W (3058) esp_apptrace: Failed to switch to another block in 5828 us!
E (3065) esp_apptrace: Failed to swap to new block: 257
W (3071) esp_apptrace: Failed to switch to another block in 5832 us!
E (3078) esp_apptrace: Failed to swap to new block: 257
W (3084) esp_apptrace: Failed to switch to another block in 5832 us!
E (3091) esp_apptrace: Failed to swap to new block: 257
W (3097) esp_apptrace: Failed to switch to another block in 5828 us!
E (3104) esp_apptrace: Failed to swap to new block: 257
W (3110) esp_apptrace: Failed to switch to another block in 5831 us!
E (3117) esp_apptrace: Failed to swap to new block: 257
W (3123) esp_apptrace: Failed to switch to another block in 5832 us!
E (3130) esp_apptrace: Failed to swap to new block: 257
W (3136) esp_apptrace: Failed to switch to another block in 5828 us!
E (3143) esp_apptrace: Failed to swap to new block: 257
W (3149) esp_apptrace: Failed to switch to another block in 5831 us!
E (3156) esp_apptrace: Failed to swap to new block: 257
W (3162) esp_apptrace: Failed to switch to another block in 5831 us!
E (3169) esp_apptrace: Failed to swap to new block: 257
W (3174) esp_apptrace: Failed to switch to another block in 5828 us!
E (3182) esp_apptrace: Failed to swap to new block: 257
W (3187) esp_apptrace: Failed to switch to another block in 5832 us!
E (3194) esp_apptrace: Failed to swap to new block: 257
W (3200) esp_apptrace: Failed to switch to another block in 5831 us!
E (3207) esp_apptrace: Failed to swap to new block: 257
W (3213) esp_apptrace: Failed to switch to another block in 5828 us!
E (3220) esp_apptrace: Failed to swap to new block: 257
W (3226) esp_apptrace: Failed to switch to another block in 5832 us!
E (3233) esp_apptrace: Failed to swap to new block: 257
W (3239) esp_apptrace: Failed to switch to another block in 5831 us!
E (3246) esp_apptrace: Failed to swap to new block: 257
W (3252) esp_apptrace: Failed to switch to another block in 5828 us!
E (3259) esp_apptrace: Failed to swap to new block: 257
W (3265) esp_apptrace: Failed to switch to another block in 5832 us!
E (3272) esp_apptrace: Failed to swap to new block: 257
W (3278) esp_apptrace: Failed to switch to another block in 5831 us!
E (3285) esp_apptrace: Failed to swap to new block: 257
W (3291) esp_apptrace: Failed to switch to another block in 5828 us![/color]