Prior to version 6.4, this was a common issue encountered by UDB users. In later versions this should no longer be an issue as circular event log is now the default.
On older versions, fortunately it's easy to solve.
By default, UDB simply records the program until the event log maximum has been reached (default is 256 MB). You can configure memory usage (e.g. for larger programs) by choosing the maximum event log size, deferring recording or by setting a circular event log.
uset max-event-log-size <size> [K|M|G]
UDB's snapshot-and-replay technique means relatively little event log is required, but non-deterministic events must still be stored in the log. All of the program's input (e.g. from disk or network) must be stored in the log, as must all other non-deterministic events such as thread switches, asynchronous signals or shared memory accesses. Memory is allocated dynamically for the event log as required, but this option can be used to limit how big the event log will grow to. Note that depending on system resources, less than <size> may be available (it is not advised to allow UDB to consume all the system's memory, lest the Linux "Out Of Memory Killer" kick in). See also the --undodb-event-log-max command-line option.
Display the currently-configured maximum event log size.
uset event-log-mode circular | straight
If `circular' then a circular buffer is used to store events. This means that if the debuggee runs for a long time, it may not be possible to go back to the beginning of the program. The default is `straight'. See also the --undodb-event-log-mode command-line option.