Jockey is a user-space library for recording and replaying an execution of generic GNU/Linux programs.
It is a debugging tool especially for long-running networked servers that suffer from bugs that are difficult to reproduce.
Here are some key features of "Jockey":
· Jockey is provided as a shared-object (dynamically linked library) file. It does not require source-code modifications nor binary relinking. Just link libjockey.so to your target application at runtime using LD_PRELOAD.
· It records and replays the effects of individual Linux system calls and (in some cases) CPU instructions. It can replay at the level of individual memory loads and stores. For example, if your program crashes because of a dangling pointer access, Jockey can replay the bug right up to the point of crash.
· Jockey can take checkpoints of process state and replay execution from any checkpoint.
· Jockey can record and replay pthread-based programs, but in a slightly bogus way--it Jockey emulates pthreads entirely in the user space. Pthread-based programs should run as normal, but under the cover, Jockey emulates multi-threading I/O using user-space context switching and a giant poll() loop.
· Jockey doesn't support programs that dynamically generate code, such as Java. It does support programs written in interpreted languages, including Perl, Python, and Ruby, although I'm not sure if Jockey is really that useful for these programs.
· Jockey supports only GNU/Linux on x86 machines.
· Jockey is supposed to run on most modern GNU/Linux systems, but it's fundamentally dependent on kernel and libc versions. We've so far ran it only on RedHat 9, Fedora Core 3 and 4. RH9 and FC4 are somewhat more actively supported.
· Installation instructions are found in INSTALL file in the source-code package.
· Jockey is written mostly in C++. You need gcc, make, and all other standard development tools. Below are additional non-standard packages used by Jockey.
· Libtool libtool
· Boost boost, boost-devel
· Ruby ruby, ruby-lib, ruby-devel
What's New in This Release:
· More system calls supported.
· Many bugfixes.
· Documentation updates.