Gdbserver is a control program for Unix-like systems intended to be started on a remote system controlling the program to be debugged and communicating with GDB using the GDB remote serial protocol (RSP). These days, any program or device using RSP is called gdbserver or having a gdbserver interface.
There exist only two open-source gdbservers for debugWIRE MCUs that interface in general with Microchip’s hardware debuggers:
- AVaRICE is a program for interfacing the Atmel JTAG ICE (and other Microchip hardware debugger) to GDB to allow users to debug AVR targets (including those with debugWIRE). It was mainly developed for Linux, but there are also versions for Windows and macOS. The current Homebrew version for the Mac, however, does not contain any HID support, and I was unsuccessful in compiling one of the more recent versions on the Mac.
- Bloom is a very comprehensive gdbserver, catering for almost all AVR chips and Microchip hardware debuggers. It works only under Linux and it seems to be not trivial to port it to macOS. Windows is probably almost impossible, because Bloom makes heavy use of POSIX features and other Linux libraries.
Under Windows, Microchip offers a gdbserver as part of Microchip Studio:
- atbackend.exe offers a gdbserver interface when started with the option /avr8-gdb-ports=<port>.
There are also a few gdbservers aimed only at debugWIRE MCUs. Some of them are also mentioned on the Hardware Debugger page. I have ordered them chronologically (based on the date when their LICENSE file was checked in):
- dwire-debug (2017) is a portable C-program that uses a USB/UART converter. It implements a CLI and a gdbserver. It supports only the one hardware breakpoint available under debugWIRE. Further, I was not able to make it work under macOS (which might tell you more about my capabilities or motivation than about the project). It has been used to create a solution that makes debugging of Arduino Uno boards in the Arduino IDE 2 possible.
- debugwire-gdb-bridge (2018) is a Pascal implementation of a gdbserver using a USB/UART converter as well. I never tried it because my knowledge of Pascal is very rusty.
- dwire-gdb (2019) is another gdbserver programmed in C using a USB/UART-converter. I never tried it out.
- dwtk (2019) is a Go program implementing a gdbserver. It uses dwtk-ice, an implementation of the debugWIRE protocol on an AVR.
- dw-gdbserver (2025) is a Python script based on pymcuprog and pyedbglib. It interfaces with dw-link and all the Microchip debuggers that speak EDBG. Moreover, since it is written in Python, it is cross-platform. I have extended the existing board manager files that support debugWIRE MCUs in the Arduino IDE 2 to use this gdbserver in order to provide a debugging solution in the Arduino IDE 2.