JVMを完全にフリーズするアプリケーションのバグを見つけました。生成されたスタックトレースは開発者に貴重な情報を提供し、Javaコンソールから取得したいと思います。JVMがクラッシュすると、コンソールがフリーズし、含まれているテキストをコピーできなくなります。
Javaコンソールをファイルに直接パイプする方法、またはJavaアプリケーションのコンソール出力にアクセスする他の手段はありますか?
更新:コードを変更せずに、言及するのを忘れました。私は手動テスト担当者です。
アップデート2:これはWindowsの下にありますXPそしてそれは実際にはWebStartアプリケーションです。
javaws jnlp-url
実際には、Javaコントロールパネルで トレース をアクティブ化できます。これにより、トレースでJavaコンソールに到達するものはすべてパイプされますファイル。
ログファイルは次のようになります。
(コードを変更できる場合)System.out
フィールドを別の値に設定できます。
System.setOut(new PrintStream(new FileOutputStream(fileName)));
Java
からスクリプトを実行している場合(Unix
を介してプログラムを呼び出す)、次のことができます。
/path/to/script.sh >& path/to/output.log
Mac 10.8.2では、ログは/Users/<userName>/Library/Application Support/Oracle/Java/Deployment/log/
にあります。
Javaコントロールパネル。オプション "Enable logging
"はタブ "Advanced
"にあります。Javaコントロールパネルは「System preferences
」から起動できます。
コンソールがフリーズすると、おそらくデッドロックが発生します(例外が繰り返しスローされることも意味します)。 jstack
を使用してスタックダンプを取得できます。 jps
を使用すると、プロセスを簡単に見つけることができます。
試してください このガイド それは私のために働きます。また、「System.setOut(fileStream);」、「System.setErr(fileStream);」を設定する方法についても説明します。