I wrote a little test code to try and understand the behavior of the LPI2C peripheral. It does not use interrupts, but rather polls relevant flags:

If I simply put a break point at line 62 (at the end) this code runs fine and I receive two bytes. But if I place a break point at line 28 where the peripheral is enabled and try and step through the code, I see the whole transfer appear on my scope, and I can step through the while loop that waits for RDF to get set at line 37, but the MRDR register just reads 0x00004000 (RX FIFO empty) and so my received byte counter never gets incremented and I am forever stuck in the while loop waiting for received bytes.
Any idea what is going on? Is the debugger (S32DS) somehow pulling the received bytes out of the RXFIFO before my code can get to them? I would expect when I hit the break point at line 28 and start stepping that at some point I would see RDF get set, see MFSR.RXCOUNT get to 2, and see the first value (without the RXEMPTY flag set) sitting in MRDR. But with stepping, I never see any of that. RDF always appears 0, RXCOUNT always 0, and RXEMPTY always 1.
I have tried this code with MCR.DBGEN both set and cleared. The only difference when it is set is that the entire transfer appears when I do the first step after hitting the breakpoint at line 28, and I never make it past the while at line 37 that waits for the RDF flag to set.