No problem. Turns out the Espressif’s OpenOCD port was inadvertently resuming the target when starting the semihosting client, preventing gdb from handling the breakpoints properly. We have patched it and released an updated toolchain. Please update to R15.
On the ESP32 platform, the semihosting client is actually a part of the Espressif’s OpenOCD port. VisualGDB starts it using the “monitor esp32 apptrace start” command and then forwards the output to the output window. The exact low-level logic of it is unfortunately outside VisualGDB’s control.
The best way to get it to work would be to narrow down a specific sequence of steps that reproduces the problem (e.g. certain program, certain breakpoint locations), reproduce it by manually running the “monitor esp32 apptrace start” command via the GDB Session window and forward the details to Espressif. As they have a more detailed knowledge of their tools’ internals, they might be able to tell what is going on.