ESP32 WROOM Redboard (WRL-19177) - How to do source-level debugging over single USB?

First - is it possible to do source-level debugging with this board over only a USB connection? Pointers to a doc/tutorial? I have been reading, searching, & testing for days. :frowning:

I’m using: MacBook Pro (Intel) MacOS 14.1.2 Sonoma, VS Code with Microsoft C/C++ extension, Platformio (Core 6.1.13 - Home 3.4.4). I have also used JetBrains CLion/Platformio & lldb besides of using VS Code.

Or to do source-level debugging on an ESP32 WROOM, do I need to attach a physical JTAG interface? Pointers to a doc/tutorial?

Over a single USB (see attached pic), I can:

  • build/upload/run/monitor both an Uno R3 & the ESP32 WROOM

  • get source-level debugging working fine with the UNO.

How do I do it with the ESP32 WROOM? If not that board, is there another?

I do LOTS of web dev (JS/PHP) with source-level debugging (JetBrains PhpStorm IDE), but this is my first dive into Arduino. I have an ESP32 project in mind and don’t want to just spit out serial.print() statements.

Am I making this harder than it should be. Feels like it. :slight_smile: Just point me in the right direction & I can run with it from there.

Thanks SO much in advance!

Haven’t tried this but the link below might help get you started with debugging.

https://www.instructables.com/How-to-Us … -an-ESP32/

Little more complex but also good information:

https://docs.espressif.com/projects/esp … index.html

Thanks for the reply & the links!

Yes, I’ve looked at those. What I’m trying to figure is - if & how to do it without a separate JTAG hardware connector - just a single USB serial cable like I can with the Arduino Uno.

I’ve read (somewhere) that if the board has an on-board JTAG interface, it’s possible? Not sure if (or which) SparkFun Redboards might have that. Thoughts?

I’m not aware of a way to debug without additional hardware unfortunately although it’s possible on Arduino boards that utilize a SAMD processor in the 2.0 IDE. For ESP, I think you have to use additional hardware connected to the JTAG header.

That’s a bummer, I’m surprised. Ok, thanks for the help!

Addendum.

Ok, with your hints and more Googling, this is starting to make sense:

  • Atmel - https://store.arduino.cc/products/arduino-zero says “…The board is powered by Atmel’s SAMD21 MCU, which features a 32-bit ARM® Cortex® M0+ core. One of its most important features is Atmel’s Embedded Debugger (EDBG), which provides a full debug interface without the need for additional hardware, significantly increasing the ease-of-use for software debugging.”

  • Espressif - https://docs.espressif.com/projects/esp … index.html says “This document provides a guide to installing OpenOCD for ESP32 and debugging using GDB.”

  • Platformio - https://community.platformio.org/t/how- … rmio/36042 says “… It is possible to program and debug directly via the ESP32-S3’s NATIVE USB, without the need to connect the ESP32 via the main USB connector. However, it is interesting to have the main USB connection in order to receive serial communication from the ESP32 on the Platformio Terminal. Thus …”

  • Open On-Chip Debugger (OCD) - https://openocd.org says “… OpenOCD provides on-chip programming and debugging support with a layered architecture of JTAG interface and TAP support”

I guess I’m spoiled coming from a space where life doesn’t exist without xdebug :-). Learning how to do the same thing in the microcontroller world is an interesting exercise.