c_moore,
It's always been a software debugger. With that I mean that a call to a software routine is performed between each PBP command, much like OnInterrupt works. It does use the PIC hardware USART to communicate with the PC but that takes up firmware space and execution cycles.

Norm,
I'm afraid I don't know the details about how the hardware debugger works but I'd guess all the files needed are available since it IS possible to debug at the source level from within MPLAB. I think it uses the .coff file generated at compile/assembly time but I don't know what else is needed.

/Henrik.