PyAvrOCD
PyAvrOCD is a Python GDB server for 8-bit AVR MCUs (currently only classic debugWIRE and JTAG ATtinys and ATmegas). It can communicate with Microchip debuggers such as Atmel-ICE and MPLAB Snap, and provides a pass-through service for the Uno-based debugger dw-link. For Microchip debuggers, PyAvrOCD uses the infrastructure provided by pymcuprog and pyedgblib.
Why another open-source GDB server for AVR MCUs (others are AVaRICE and Bloom)? The main intention is to provide a cross-platform AVR GDB server. In other words, it is the missing AVR debugging solution for PlatformIO and the Arduino IDE 2.

In addition to being cross-platform, PyAvrOCD offers some enhancements over its "competitors", particularly in terms of flash wear and single-stepping.
After installing the package, the following steps are necessary for successful debugging:
- Installing and configuring the appropriate debugging software
- Preparing a target board for debugging
- Connecting the debug probe to a target
- Invoking the GDB server
- Debugging a program on a target
- Restoring a target to its original state
Once you have a debugger connected to the server, you can control the server's behavior using monitor commands.
While the package appears to function as intended, there is always the chance of a bug, the documentation may need improvements, or a feature may be missing. Or you simply have a question or an idea. We are always happy to receive contributions along those lines.