That depends on your intentions. With debugging, you mean "wanting to know what happens inside".
For checking the timing, and timing relation to other events/interrupts, you can add instrumentation code to toggle GPIO pins. That helps you visualize the timing, using a scope or logic analyser.
For checking values and states inside the handler, you can store those of one or multiple runs in array, and output them offline later, e.g. via semihosting. That requires instrumentation code as well.
I once worked on a project with a MCU core on an ASIC, were the project manager had decided to go along without debug interface (which turned out more costly later on ...). We used sequential toggles of an available GPIO to output events/state for debugging purposes - again with a scope.