BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース New LiveRecorder for Java Enables Software Failure Replay

New LiveRecorder for Java Enables Software Failure Replay

原文(投稿日:2020/08/29)へのリンク

LiveRecorder for Java は、新たにリリースされたソフトウェア障害再生アプリケーションだ。これにより、開発者はアプリケーションの障害を記録し、IntelliJ で再生して障害の原因を見つけられる。特に間欠的故障を伴うデバッグ時間の短縮に役立つ。

LiveRecorder アプリケーションは、アプリケーションのすべてのコード実行ステップを記録する。 水面下では X86 マシンレベルの命令が記録されていることを意味する。記録を再生できる。 これは、ライブのアプリケーションではなく記録で動作することを除いては、デバッグによく似ている。これは特に、ときどきしか発生しない、いわゆる間欠的故障のデバッグに役立つ。例えば、複数のスレッドが同じリソースにアクセスしたために例外が発生した場合などだ。 ライブのアプリケーションで間欠的故障をデバッグするのは、いつ発生するかわからないので、かなり大変だ。LiveRecorder では、障害の記録が行われる。そして、リプレイ機能を使用してデバッグできる。

LiveRecorder は、どのような環境でもアプリケーションの障害を記録できる。しかし、記録の結果、ほとんどのプログラムで2~5倍の速度低下が発生する。チームで性能の改善に取り組んでいるが、その間は本番での運用は避けた方が良いかもしれない。テストで失敗を記録することも可能で、ビルドツールとの統合も可能だ。これにより、例えば Jenkins などで継続的なデリバリーパイプラインの一部として LiveRecorder を実行できる。

処理は3つに分けられる。それは記録再生IntelliJ でのデバッグだ。記録再生アプリケーションは Linux 上で動作する必要があるが、IntelliJ はどのようなプラットフォームでも動作する。

エージェントは、アプリケーションの命令を記録するために使用される。

-XX:-Inline -XX:TieredStopAtLevel=1 -XX:UseAVX=2 -Dsun.zip.disableMemoryMapping=true -agentpath:/path/to/lr4j-record-1.0.so=save_on=always

様々な設定オプションが用意されており、例えば、記録のファイル名を設定できる。

その後、再生アプリケーションを使用して記録を再生する。

/path/to/lr4j/lr4j_replay -i /path/to/recording.undo -cp classpath

その後、IntelliJ プラグインを使用して、再生アプリケーションに接続できる。接続に成功したら、アプリケーションをデバッグしてみよう。IntelliJ プラグインで最も顕著に追加されたのは、「アプリケーションタイムライン」だ。

Java用の LiveRecorder:アプリケーションタイムライン IntelliJ

InfoQ は製品担当副社長の Jonathan Harris 氏に連絡を取り、LiveRecorder についてもう少し掘り下げて、将来を覗いてみた。

InfoQ:みんなにもう少しあなた自身のことを伝えてもらっても良いですか?Undo での役割と一日の様子を教えてください。

Jonathan Harris 氏:私は Undo の製品担当副社長で、ソフトウェア業界で 20 年以上、開発とマーケティングの両方の役割を担ってきました。Acorn と Psion での開発者としての経験、Symbian Ltd でのエンジニアリングマネージャとプロダクトマネージャ、Tizen Association での CTO とプロダクトストラテジストなどがあります。

私の一日の主な仕事は、Undo がビジネスユニット全体で連携しているかどうかを確認することです。また、お客様に魅力的なユーザー体験を提供する最先端の製品を提供するために、私は適切な準備をしています。

InfoQ:先日、LiveRecorder for Java が発売されました。他の LiveRecorder と同じ機能を提供しているのでしょうか?

Harris 氏: LiveRecorder はJava、C/C++、Go プログラミング言語をサポートしています。また開発者は、ソフトウェアの障害を体系的に記録し、記録を再生して実行履歴を分析し、バグを迅速に解決できます。 

LiveRecorder for Java のその他の利点としては、以下のようなものがあります。
記録は、ソフトウェア障害の 100% 再現性のあるテストケースを提供し、分析とデバッグの準備が可能 

記録はMTTR を加速させるために、チームメンバーと簡単に共有できるように持ち運び可能

強力な統合されたリバーシブルデバッガ

欠陥の根本原因を簡単に見つけられるように、記録を前後に再生 

LiveRecorder は IntelliJ IDEA と開発者のワークフローに継ぎ目なくプラグイン


InfoQ:他のプログラミング言語ではなく、Java をサポートする理由は何だったのでしょうか?

Harris 氏: Javaは今年で25歳になり、開発者のためのプログラミングの選択肢のトップ3に常にランクされています。そして、この時間枠の中で宇宙のイノベーションは確かに進んでいますが、ソフトウェアの失敗もまた複雑になっています。 

LiveRecorder は同社の主力製品です。しかし、今回の Java リリースまでは C/C++ と Go アプリケーションしかサポートしていませんでした。C++ は明らかに大きな市場です。ですが、比較的ニッチな市場です。Java はより大規模なアプリケーションです。私たちはこの分野で重要なサービスを提供できることに非常に興奮しています。

InfoQ:Java 版を作成する際に直面した最大の課題を教えてください。

Harris 氏: HotSpot JIT でコンパイルされたコードを実行している JVM を記録し、Java のソースラインデバッグを表示したままにすることです。

InfoQ:Kotlin のような他の(JVM)プログラミング言語の予定はありますか?

Harris 氏: 理論的には、Java、Kotlin、Clojure、Scala、Jython など、JVM 上で動作するコードはすべてツールでデバッグできます。Kotlin は次の言語として正式にサポートするつもりです。このツールは以前は C、C++、および Go をサポートしていました。JVM では数十種類の潜在的な言語が追加されています。Linux カーネルとの深い統合により、今日の Undo の技術は、サーバー上で実行される Java 仮想マシンに焦点を当てています。

InfoQ:次のバージョンに向けて、どのような機能に取り組んでいますか?

Harris 氏: Visual Studioコードのサポート - DevX (開発者の体験) の改善と、この人気の高い開発プラットフォームのサポートの追加に焦点を当て続けています。

Kotlin のサポート - そしておそらく Scala もです。Kotlin の方がより多くの支持を得ているようです。 

ライブのリバーシブルデバッグ - ライブのアプリケーションを実行してリバースデバッグができると便利です。

 

この記事に星をつける

おすすめ度
スタイル

BT