I abandoned MPLABX because of the issues I was having, and reverted to running AS7 in a windows VM.
Does AS7 really NOT handle manually inserted breakpoints (__asm__ __volatile__("break");) ? I expect it to break to the debugger, and then continue on the next instruction when I use one of the continue or step commands (having noticed that it wasn't a debugger-insterted break, and therefore it doesn't need to reprogram the flash with the original instruction.) This seems to be what MPLAB does.
Instead, it gets stuck, and won't proceed beyond the break instruction. Which is pretty useless.