gdb reversible mode is useless for anything other than a toy example. We never got to the point where you can e.g. start the PyPy process, not to mention do anything with it. We had much more luck with UndoDB, but this one is still ~20x slower than native.
The lack of reverse debugging isn't an inherent limitation. One could index the replay and take micro-checkpoints along the way; then when you want to step backward, you rewind to the last checkpoint and play forward until you hit the previous instruction.
I have only tried myself the reversible debugger in ocaml, and it was an eye opening experience.