Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News "DVR For Java", Preview The Chronon Recording Server

"DVR For Java", Preview The Chronon Recording Server

This item in japanese

Chronon Systems has announced the beta availability of their new Chronon Recording Server, a "remote control" component of sorts for their Chronon toolsuite, now at version 1.8.7 as of Aug 15.

With it you can record the internal state of your java application while it runs, wherever it runs, then later "play back" the entire program execution to examine or debug. This playback-style debugging can be done on any other machine, or the same machine, needing nothing more than the recording file itself. Chronon Systems describes this all in one simple statement: its "DVR for Java".

Chronon (core) bundles with an Eclipse plugin that gives developers the power to playback a recording to examine the execution of the program in a debugging-style session. Like to a traditional debugger, the plugin provides rich views of data about the entire state of the application at each step, along with many additional tools to further filter and evaluate the programs execution flow.

This Time Traveling Debugger shows the full stack trace of every active thread and the exact content of memory at any point in time. You can instantly jump directly to any point, step back or forward in execution, since all the debugger tool needs to do is query the recording file like a database.

Because all state of the program is stored, the Chronon debugger can also do things which a traditional debugger cannot, like showing all values ever assigned to a particular variable, or searching for and jumping instantly to when that variable was a specific value, like 'null' for example.

The Chronon recorder runs as a java agent alongside your Java application, instrumenting the bytecode of classes loaded in memory to observe and collect data about what your Java program is doing. The data is asynchronously compressed and saved to a file on disk which can later be transferred to any computer, like a developers machine, where the "Time Traveling Debugger" just described can be used to playback and examine the program.

This may be particularly useful for long running server programs since, unlike you do with a traditional debugging tools, you don't need to set a breakpoint, find a way to reproduce the problem, and wait for hours until the breakpoint is hit. For example, one could can grab a recording file after the first occurrence of an exception, jump directly to the point of the exception and "step backward" to determine what caused the exception.

The latest addition to the toolset, the Chronon Recording Server component, allows you to manage the recorder on multiple JVMs running on remote machines and easily share the recording files among team members. In this new “server mode”, the Chronon recorder can dynamically start and stop recording in a running Java program. When something undesirable is reported about the program, a bug for example, the recording server can be instantly switched on to watch for a reproduction of the problem - no need to add logging code and redeploy or setup remote debugging sessions.

The folks at Chronon Systems quote these summary benefits about their tool suite:

  • Avoid dealing with Log files: You can record the entire program and play it back on any machine, thus reducing the need to pour through large log files.
  • Record remote Java programs: Connect every computer in your organization to the Recording Server and manage the recorder on each machine.
  • Collaborate easily between QA and Development: With the Recording Server, QA can keep testing your Java program with the recorder running in background. In case of any issues, the dev team can easily download the recording from the QA boxes and debug it using the “time travelling debugger”.
  • Record long running applications: Chronon Recording Server is designed to record programs that run for days, weeks and even months. The Recording Server will take care of splitting the recording if it get too large and flushing out old recordings.
  • Dynamically Start and Stop Recording: The Recording Server allows you to dynamically start and stop the Chronon recorder in a running Java application. This way you can run your application always with the recorder enabled but record only when you need to.

The beta release will be available free for the next few weeks. Give it a try and report your findings and feedback here.

Rate this Article