ICE and debugging options

I was wondering if the Atmel/Arduino environment has the possibility using a JTAG ICE for debugging.

In poking around, I saw people using ICE as a programmer, but not as a debugger.

Making changes and uploading new code to the target is a much slower dev process than using a ICE for debug. I feel like I have been transported back 25 years, when debugging was often blinky lights and sometimes a display.

I realize that the AVR parts are not for large projects and sophisticated debugging is not a requirement, but setting break points and looking at registers, etc is really helpful.

Arduino does not have that kind of debugging, but Atmel Studio makes that claim. I've not used it.

The usual advice for Arduino debugging is to use Serial.print(...) and Serial.println(...).

Atmel has a hardware debugger but the communication protocol is proprietary.

I have seen articles on software-based debuggers. The articles list shortcomings that will be addressed in the future - but never are.

Of course, I may have missed something and I am willing to be educated.

By the way, I don't find register contents very useful for debugging a C++ program.