You have to realise that the "debugging" provided in MCSP is a software/firmware solution.
Between each of your PBP statements the debugger inserts code of its own to talk to the software running on the PC, it uses the (E)USART to do this. This works fine for some things, not at all for other things since it A) steals execution time away from YOUR code and B) takes up space in program memory (and probably some RAM) which you may or may not have to spare. Apart from trying it once I've never used it.

If the only "problem" for you is the double connection (programmer AND serial cable) to the PIC you could consider using a bootloader over the same serial line as the debugger.

Real source level debugging, at the hardware level, has very little impact on the execution and footprint of your actual code and uses the device programmer/debugger (and not a UART connection) but unfortunately MCSP does not support that and you have to resort to MPLAB / MPLABX where it IMHO is just BARELY usable. I've tried it and given up - multiple times - despite written instructions and videos. It seems MPLABX moves too fast for PBP to keep up (not surprising), I mean it IS possible to compile code but the language plugin (syntax highlighter and code folding) doesn't work, used RAM display doesn't work, you can't monitor anyting but BYTE size variables without running thru hoops and last time I tried it I couldn't even set a breakpoint in the code. That doesn't mean you can't - just that I wasn't capable of doing it.