The AVR family has only supported the vMicro Software debugger, as it lacks support for JTAG.
A number of GDB Stubs have been created by others, allowing you to debug in a similar way to the Hardware debugging, without the hardware....
This can now be used out of the box in vMicro in a few simple steps, with no additional hardware, and an external Library of your choice
NOTE - vMicro only starts GDB, so alternative GDB Stubs can be used, the below is just an example. Depending on which stub library you choose will vary the boards supported.
This is also available on Instructables and YouTube, and on the Arduino project Hub
Simply connect your AVR to your PC via the USB cable as normal
Ensure you have Visual Studio and the vMicro Extension Installed
Ensure you have your GDBStub library installed (e.g. an example is https://github.com/jdolinay/avr_debug)
Open your Sketch, and select the options from vMicro > Debugging as shown below:
NOTE - as the debugger uses the Serial interface of the AVR, you will have to remove all calls to Serial from your code. This can be done using a define as seen in the screenshot below.
You will need to add a couple of additions to your sketch (also in output window on debugger select):
- Ensure you have the Debug Configuration selected from the Configuration Manager Window
- Review the examples in your library for code additions:
- Include the relevant stub.h file at the top of your sketch [from the library above "avr8-stub.h"]
- Add the relevant init() call to your setup() [from the library above debug_init()]
- Add any other calls required [from the library above add breakpoint() at top of loop()]
- If you know where you want the first breakpoint in your code, add it now
- To start the debugging process, you can either:
- "Debug > Attach to Process" button if your code has already been uploaded to the board
- "Debug > Start Debugging" if your code has not been uploaded
Congratulations - you should have the debugger running, and further windows can be opened from the "Debug > Windows" menu once you have started debugging
There is also a video guide for this below: