A time in execution history is specified as a bbcount (representing the start of the BB), or as bbcount:pc (representing a PC in the BB).
UDB accepts commas in the bbcount, so you can insert them to make a
bbcount more readable. For example,
the same bbcount.
This concept of time is unrelated to wall-clock time. For example, if a
program is blocked in a call to
sleep(), the bbcount does not increment
as no instructions are being executed.
Inspect the current time using the info time command, and jump to a time using the ugo time command. To help manage times, create bookmarks associating memorable names with times. To convert between time in execution history and wall-clock time, use the Log Jump feature.
info time [-a]¶
The current time in execution history.
This is the number of BBs that the program has executed (the bbcount).
Append the program counter value.
For example:4% 9,704> info time Current time is: 9,704 (in recorded range: [1 - 231,025]) 4% 9,704> info time -a Current time is: 9,704:0x5555555552c5 (in recorded range: [1 - 231,025])
ugo time bbcount[:pc]¶
Jump to a time in the program’s execution history.
Specify the time as bbcount to jump to the start of a BB, or as bbcount:pc to jump to a program counter value in a BB.
If bbcount is beyond the end of execution history, the program switches to record mode if necesary and continues execution until the specified bbcount is reached, or the program finishes, or a breakpoint is hit.
If the program does not reach the specified pc in the given bbcount, the time-travel operation fails.
For example:4% 9,704> ugo time 4 elf_get_dynamic_info (temp=0x0, l=0x7ffff7ffd9f0 <_rtld_global+2448>) at get-dynamic-info.h:50 50 get-dynamic-info.h: No such file or directory. 0% 4> ugo time 9,704:0x5555555552c5 main () at cache.c:71 71 if (i % 100 == 0)
The reasons for representing time using the bbcount:pc notation are:
Precision and unambiguity: each executed instruction in a program corresponds to a unique time in the program’s execution history.
Performance: it’s easy to determine the bbcount and program counter, without the need for an expensive system call.
Convenience: it’s easy to compare two times in bbcount:pc notation.
Concision: in most cases the bbcount alone is sufficient to identify a time of interest.
There is no guarantee that different runs of a program will execute the same sequence of BBs. Non-deterministic events such as address space layout randomization, signal delivery, thread switches, and so on, may cause the execution flow to be different from run to run.