[Amended] Linux systems debugged in the field by embedded execution logging

January 20, 2015 // By Graham Prophet
Reversible debugging tools provider Undo Software has introduced Live Recorder, a version of its toolset that assists in debugging Linux systems as they are running, in the field or at an end-customer’s site.

The product is a two-part offering. The run-time code is instrumented with library elements – Live Recorder – which, when activated, yield log files that can be transferred back to the development team who can apply the UndoDB reversible debugger. Live Recorder allows Linux programs to make a detailed recording of themselves while they are running. The resulting Undo Recording enables developers to debug an exact copy of the original program’s execution, allowing them to track down bugs without needing to reproduce them in-house, write test cases or make time-consuming visits to customer sites.

Undo Software’s debugger allows the code execution to be reproduced and “rewound” - run in exact replica from a chosen point, to reveal the sequences that led to a bug or failure. Software failures in production, the company notes, can be notoriously difficult to fix. Until now, in order to solve a problem reported on code running in production, developers have needed to gather information relating to the failure to write a test case and/or reproduce the bug in-house. This is time consuming and requires significant effort from the end customer. If this method fails, enterprise organisations often have to send staff to the customer site to try to reproduce the bug in situ , inconveniencing the customer and costing them significantly in time and resources.

The company says that exact reproductions of code execution can be achieved without building unmanageably large log files. The Recorder selects suitable points in the code flow to, in effect, take “snapshots”: the debugger returns to those and reproduces execution from one of those points. This effectively compresses the captured data. The system can be used with any Linux system in a recent distribution, including Android. The developer does not need to have an exact replica of the end-customer’s hardware: code flow will be faithfully recovered on a machine with same generic architecture as the target. The debugger is not