Image: DragonImages, Getty Images/iStockphoto

Of all the scientific tools available to programmers today, one process that hasn’t changed much is the break/fix cycle. Someone finds a bug, documents how to reproduce it, and sends it back to a programmer who tries to recreate the scenario.

SEE: Quick Glossary: DevOps (TechRepublic Premium)

Barry Morris, CEO of Undo, compares it to the aviation industry, where an airplane crash includes a “black box” flight recorder. That flight recorder includes information on the velocity, vertical speed, and if there was a problem with an engine. In software, we are lucky to be able to pull a little information from the logs. As Morris puts it, “If a self-driving car drives into a tree, you don’t know why. The best practice is to find the smartest people and try to reproduce it. In effect, we get a bunch of self-driving cars and a bunch of trees and smash them together and hope we can figure something out.”

While some software includes telemetry, for the most part, most debugging adventures really do go something like that.

If you use Linux and run on the Java virtual machine, all that may be changing for you.

Undo/redo as a service

Zoe Laycock, head of product marketing for Undo, is a former software developer, tester, and digital director. Her interest is in getting programmers out of debugging so they can spend more time fixing.

“When I was a programmer, I wanted to spend time making a product, not debugging it. Yet, if you look at some of the surveys out there, programmers can spend as much as 70% of their time debugging. That is frightening,” Laycock said. “LiveRecorder is about being able to capture the errors, but also de-silo-ing and democratizing error resolution.” She added, “Imagine not spending any time reproducing the error before debugging it. That can actually change the way you do error resolution. As part of the test process you have a backlog of failing tests and have to decide what to do about them … previously you might have a QA team that produces a test report that is ‘chucked’ to a developer that does not include root cause. With recording, you can append recordings of exactly what failed as well as other indicators. The developer can actually watch the execution forwards but also backwards. You can find the point of failure and work backwards to root cause.”

SEE: Top 5 programming languages for systems admins to learn (free PDF) (TechRepublic)

Image: Undo

When it comes to low-level debuggers, the standard for Linux is GDB, a classic all-text debugger. That works for C and C++ applications, but not Java. With this release, LiveRecorder supports debugging JVM languages, using the IntelliJ IDE, the most popular Java development environment. The LiveRecorder plugin integrates directly with IntelliJ, providing the same level of in-development-environment support as JUnit or a classic debugger. However, the recording can jump in at the point of failure, with the variables populated—and go backward.

The technology stack

Undo’s technology consists of two parts. The recorder works at the machine-code level, interaction with the core operating system, or kernel. Morris added, “It doesn’t care what programming language you use. If you want to view that recording, you can look at the raw machine code. You can run queries against it to see how many times an operation runs or search for some text. If you want to debug it in the language you wrote it in, then you’ll need a translation layer in the viewer.”

SEE: Top IT certifications to increase your salary (free PDF) (TechRepublic)

Undo’s announcement is that viewer for the Java Virtual Machine. That means that any code that runs on the JVM can be debugged in the tool, including Java, Kotlin, Clojure, Scala, and Jython. While the tool previously supported C, C++, and Go, the JVM adds dozens of potential languages to the mix.

Because of its deep integration with the Linux kernel, Undo’s technology today is focused on the Java Virtual Machine running on servers.

But is it real?

Imagine recording every interaction that software does at a code level. Morris is quick to point out the optimizations that are Undo’s competitive advantage. Its software can tell the difference between things Java can recalculate itself and what needs to be stored. Still, the software does add a performance cost. According to Morris, the most common use case is as part of a test automation suite, perhaps part of a Continuous Integration (CI) run. A company might have a hundred thousand assertions run overnight (or more often), of which a few dozen fail intermittently. When an analyst arrives in the morning to reproduce the problem with his cup of coffee, that analyst can drive to exactly where the failure happened, then work backward, like pressing rewind while watching a movie on pre-recorded television. Between root cause analysis on intermittent failures and fixing real issues more quickly, “That can make a test suite turn green very quickly.”

SEE: The best programming languages to learn in 2020 (TechRepublic)

Undo does have customers using its software in production. In that case, Morris said, the company is more likely to “flip a switch” and start recording when a problem arises. When the problem reappears, the team will have a recording of exactly how it happened, to diagnose the problem. “Typically these customers are using the tool for their most strategic systems. We are not talking about debugging a website. Instead, this is SAP using our tool for HANA, their core database product,” to find and resolve problems quickly.