Rshell works pretty well, although the newer M5 releases are a lot harder to get into the correct mode, particularly on the atom.
Uiflow is micropython: I have often written something in uiflow and then switched to the micropython side to see what the python is for a given uiflow thing. And then I can cut and paste into repl.
For long-term debugging (fails once a day or week), I leave the device connected to putty.
I have considered adding code that would catch Exception () in the main loop, do a stack trace, and save it into a file so that I don't need it to always be connected, but have never implemented it.