In general with microcontrollers (as arguably with PCs), it makes far more sense to build-and-test step by step in a modular fashion, using the Serial Monitor to issue diagnostics.
In other words, you use the software itself as the debugger and the hardware as your emulator. This is particularly true as time-critical sections are likely to use hardware that you cannot emulate anyway (such as of course, the USB interface).