2011-07-14 10 views
6

私たちは、非決定論的に起こるバグを見つけようとしています(決定論的ですが、実際に何が起こっているのか分かりません)数時間に1回発生します。実行されたコードをJVMに記録/再生するためのJavaソリューション

私たちは多くのネットワークデータを読み、多くのスレッドを持っているので、入力、競合状態、またはその両方の組み合わせからの可能性がありますが、ほとんどは再現性がありません。

JVMで起こったすべてを保存できるJVMレコーダー/リプレイヤーがあるかどうか疑問に思っています。そのため、ステップバイステップで手順を実行して例外への手順を再作成できます。

私は1つを見つけました。 (私はそれを掲示するつもりはないので、人々は私が商品を宣伝しようとしているとは思っていません)。しかし、他にも、もっと重要なのは、人々が使ったことがあるかどうか、うまくできた。

編集追加する:

私はReplay Solutionsを見つけました。私は決してそれを使用していない、と私はそれを聞いたことがないので、私は実際にどれくらい良いかわからない。

私はJProfilerを使用しますが、実際にはすべてを記録/再生するサポートはないと思います。

+0

先にリンクを貼ってください。それはあなたの会社のソリューションではない場合は常にOKです、そしてあなたの会社のソリューションであっても、あなたが行ったような免責条項を追加すればOKです。 –

答えて

8

私はChrononを使用することをお勧めしますが、それは私のためにはうまくいきましたが、まだそれを広範に使用していません。

+0

ああ...それは私が数ヶ月前に見直したものです。彼らは実際に彼らのSEOを最新にする必要があります。私は私の人生のためにそれを見つけることができませんでした。 –

+0

複数のスレッドをサポートするかどうか知っていますか?それと同じように、(異なるスレッド上であっても)各命令が元々の順序と同じ順序で実行されることを保証しますか? –

+0

私はそれについて知らない、私は彼らに連絡し、あなたの問題を議論し、あなたがそれについてブログを約束することをお勧めします。彼らはまだ彼らの可視性を向上させようとしています;) –

0

特に、スレッドのインターリーブのために、(マイクロベンチマークの場合を除いて)すべてを記録することはできません。パフォーマンスの低下/減速は非常に厳しいでしょう。あなたが再現しようとしている問題は、並行処理のバグがある場合は、部分的な伐採を行うシステムを試してみて、SMT解決使用してインタリーブを完了したいことがあります。私の知る限り

http://www.gsd.inesc-id.pt/~nmachado/software/Symbiosis_Tutorial.html

を、これが最もあります最近のシステムであり、オープンソース(java、cおよびC++)で利用可能です。

関連する問題