Resources
Understand Undo Recording Files
Author: Alasdair Mostyn, Software Engineer at Undo
What is an Undo Recording?
Undo recording files are created by LiveRecorder, and contain a comprehensive capture of a program’s execution. This includes the original executable, a log of all non-deterministic behaviour (system calls, thread switches etc), debug information, and other essential information required for the execution to be replayed and debugged later.
This is a lot of information, and as you might expect, the resulting recording file can become very large! As your collection of Undo recordings grows, it becomes increasingly important to understand exactly what each file contains, and the requirements on where it can be replayed.
Introducing undo recording-summary
The new undo recording-summary tool, now available in Undo 8.3, provides a solution to this problem in the form of a concise, human-readable summary of an Undo recording, allowing you to gain an understanding of its contents at a glance. The ability to access this information quickly without having to load a recording first can save valuable time, and allows you to be sure that a given recording file contains what you expect.
The output of undo recording-summary
is broken down into three main sections:
First, there is the Program
section which allows you to learn what was recorded. This includes the executable name, time of recording, reason for termination, and minimum memory requirement when replaying.
Second, the Recording platform
section contains information about where the recording was made. This includes the operating system, hostname and architecture. This section also contains the Undo engine version and license UID used to generate the recording.
The final File size
section allows you to find out more about the composition of the recording file itself. If the recording file size is a particular concern to you, then you can see which sections are taking up the most space. The different recording file sections are:
- The
Event data
section contains all the non-determinism exhibited by the program. Every system call, thread switch, change to shared memory, and many other things, will all be recorded in this section. This will grow the longer your program runs, so can be reduced by recording a shorter period of time. - The
Executable and debug files
section represents the size of all the binaries used during execution of the program, and (if available) all the debug information required by UDB to display variable names and source lines, among other things. In comparison to other sections this should be relatively small. - The
Program state
section contains the memory space of the original process, and at each snapshot within the recording. This full state is required for deterministic replay, and is already heavily optimised using differential compression between each snapshot. - The
System information
section contains other miscellaneous information about the machine on which the recording was created. The size of this section should be negligible.
Find more detail with undo recording-json
undo recording-summary
is designed for a quick, manual inspection and the output may change in future. If you are interested in a more detailed and parseable output, then consider using the undo recording-json command instead, which can be piped into a suitable program for further processing.
Want to see what else has been introduced in the Undo Suite 8.3?