Hi Don,
Breakpoint 1 is not even being sent or hit or we would have seen it in the output. Breakpoint 1 is in the writeLCD() function.
Breakpoint 2 is shown in your trace extract and will be empty because the breakpoint is in your clearLCD() function and you have set it not to show a value. I notice that breakpoint 2 is also in a function that expects the caller to have allocated a global temp variable but I am sure you have that catered for.
Breakpoint 3 is positioned so that it only fires if (keyPad == "down")
You can switch on "tools>options>compiler>show build folder" where you will see the .cpp file that is actually compiled. You will see in this file that a serial.print() sends any watched variables such as strMsg for breakpoint #1
As I have said it is a simple system, I haven't heard of the lcd functions causing a clash with serial so maybe you should use serial print(strMsg) and see what happens.
Because we are using standard Arduino functions it's more likely that something is overwriting some Arduino memory. maybe temp being used before it has been populated or maybe a null value in one of the dtostrf conversions. Obviously you have a big sketch with a lot going on so I can't really look at it in a reasonable time frame.
One question I have is what does the lcd do if it is passed an empty string. Does it leave the previous values on the screen.
Maybe try adding break points before the writeLCD is called allowing you to individually report what is in each tempArray[n]
writeLCD(1, tempArray[0] + tempArray[1] + tempArray[2] + tempArray[3] + tempArray[4] + tempArray[5] + tempArray[6] + char(223) + "C")
One good test would be to remove the breakpoint in the write and replace with serial.println(strMsg)
if you persist with the debugger I suggest watching the youtube tutorial on the
debugger page. It might show a few things about the trace window that will help you see what is or is not happening.