In theory, the replayer could be made to rerecord a full memory trace. Running the replayer in gdb would be enough for a single process.
Yes exactly, or if it's cheaper, create periodic compressed snapshots and replay from the previous one to recreate intermediate states. In my experience GDB's recording is very expensive and very rapidly runs into resource limits. Hopefully a snapshot-based approach would be more scalable.