预览“Java 数码录像机”—— Chronon Recording Server

  • Mike Bria
  • 沙晓兰

2011 年 8 月 20 日

话题:Java语言 & 开发

Chronon System 近期公布了Chronon Recording Server的 beta 版本。Chronon Recording Server 可以说是 Chronon 工具箱系列产品中一款远程控制工具,大家可以下载试用一下 8 月 15 日公布的1.8.7 版本

这个 Chronon Recording Server 可以记录任何 Java 应用在任何机器上运行时的内部状况,完了之后,通过其中的“回放”功能,整个程序的执行过程就一目了然了,这对程序调试来讲非常实用。这种回放式的程序调试可以在运行该 Java 应用的机器上进行,也可以在其它机器上进行。无论是哪台机器,只要能访问纪录文件就都可以。Chronon Systems 一句话概括了 Chronon Recording Server 的实质:它是“Java 的数码录像机”。

Chronon(core)当中捆绑了一个 Eclipse 插件。正是因为这个插件,大家才能够在类似调试环境的视窗中通过回放纪录文件来检查程序的具体运行状况。跟传统的调试器一样,这个插件提供丰富的视图以助于查看数据,比方说可以追踪程序每一步执行时的状态。此外,插件还附带一些筛选和评估程序执行流程等其他功能。

它的Time Traveling Debugger还能显示每个 active 的线程完整的 stack trace,甚至还能追溯当下内存所存储的确切内容。用户可以立刻跳到纪录的任何时间点,无论是跳到更早的时间点还是之后的,都没有障碍,因为 Time Travelling Debugger 所做的其实就是像查询数据库那样查询纪录文件而已。

正因为 Chronon 纪录下整个程序运行时候的所有状态,所以它的调试器还能提供一些传统调试器无法实现的功能。比方说,它可以查询某个变量在整个程序运行当中被赋过多少值,都是些什么值,甚至还能直接跳到这个变量被赋予某个特定值的时间点,比如说这个变量是空值的时候。

Chronon recorder可以看作是所需调试的 Java 应用的一个 Java 代理,这个代理可以在应用程序运行的时候通过分析装载在内存当中的字节码来观察和采集反应该程序运行状况的数据。采集到的数据在经过异步压缩以后作为独立文件保存到硬盘上,之后能够传送到任何计算机(比如工程师的机器)上方便用户通过前面讲到的“Time Traveling Debugger”的回放功能来调试程序。

这个工具对于那些需要长时间运行的服务器程序来说特别有用。尤其是传统的调试工具都需要工程师事先设置断点,想办法重现遇到的问题,然后再等上几个小时直到程序执行到设置断点的地方。用这个工具的话,工程师就只需要在异常抛出以后抓取对应的纪录文件,在纪录中找到异常抛出的时间点,然后通过“step backward”查看在异常抛出前程序每一步的运行情况,从而确认导致异常的原因。

Chronon 在最新的系列产品中还添加了 Chronon Recording Server 组件。这个组件可以远程管理在多个 JVM 上运行的“录像机”,更方便各小组之间共享各自的纪录文件。在最新的这个“服务器模式”下,Chronon recorder 可以动态地启动或停止记录 Java 程序的运行。一旦程序有任何非正常的运行状况,比如 bug,用户可以立刻通过服务器启动 recorder 的记录功能,以记录非正常状况的重现过程。这样一来,用户都不需要追加任何日志记录代码,更无需重新部署或设置远程调试环境。

Chronon Systems 的工程师这样概括他们的产品的优点:

  • 无需解析日志文件:程序运行的全过程都可以完整记录,不需要再去解析冗长的日志文件。
  • 远程记录 Java 程序运行状况:把所有计算机都连到 Recording Server,由服务器统一管理每台机子上的记录。
  • 便利 QA 跟开发工程师之间的协同工作: QA 可以通过 Recording Server 记录所有的测试过程,万一测试发现任何问题,开发工程师都可以从服务器上获取相关的记录,然后利用 Time Traveling Debugger 完成调试。
  • 可以记录需要长时间运行的应用:无论是需要运行几天,几个星期,甚至是几个月的程序,Chronon Recording Server 都可以记录它的运行过程。如果需要记录的时间过长,服务器会自动分多个文件记录,不会因为文件太大而丢失老的纪录。
  • 动态启动或停止记录功能:Recording Server 可以动态地在 Java 应用运行的过程中启动或者停止 Chronon recorder,这样一来,我们可以在应用运行的全程中都开着 Chronon recorder,但只在需要记录的时候启动记录功能。

这个工具的beta 版本 在最近几个星期都可以免费下载,大家不妨试用一下。

查看英文原文:"DVR For Java", Preview The Chronon Recording Server

Java语言 & 开发