はJavaプログラムの作成とデバッグ情報を利用できない生産システム?
-
20-09-2019 - |
質問
はありませんが回避すべきこの作成にはデバッグ情報のJavac私のJavaクラスの使用に生産すはありま速やセキュリティ上の懸念べることに気をつければよいのか。
だというデバッグ情報などの行番号でスタックトレースなので、debugレベルのロガー.
関連する質問
解決
あなたは、デバッグオプションを指定してコンパイルを意味するのですか? があるJavacのデバッグとの性能差はありますオフですか
他のヒント
開発者として言えば、私はあなたがおそらくと離れて得ることができるようにできるだけ多くを残してお勧めします。推理?
あなたが持っている情報ののONLY の部分は、スタックトレースで、バグがコマンド上で再現することはできません、それは元によって完全に予想外のあった場所ある日、あなたはあなたのプログラムにバグが発生しますプログラマは、それを修正するためにあなたの仕事です。そのスタックで使用可能なより多くの情報は、より良いを追跡します!内のすべてのデバッグ情報を残す!
あなたは、その後、各クラスが見つかったのjarファイルについての情報を提供することができます(ファイルへのスタックトレースを取得するために)ロギングフレームワークを使用することができます。 Logbackはこれを行うことができます、と私はlog4jのはあまりにもできると信じています。
あなたはの許可のすべての情報を含めることではないかもしれないが、私は、あなたが最初に叫ぶと叫ぶ必要があると考えていると、それは不測の理由からで残されるべきであると言います。
Performancewise私はホットスポットので、それが重要だっていないことを信じています。
、スタックトレースを印刷するために、周りのことを維持するために一般的に良いアイデアです。顧客はあなたがで作業するためのバグレポートにスタックトレースに貼り付けることができます。
あなたが見えているあなたのメソッドの名前について本当に心配している場合は、は、 ProGuardののか、いくつかを使用することができます他の難読化ツール。 ProGuardのは、それが非難読化することができますスタックトレースを、顧客はまだあなたに送ることができるように素敵な性質を持っています。
難読化が完全ではないので、あなたが努力を費やすしたくない場合は、それをやっていないと間違って何もありません。
デバッグの無理と、プログラムのパフォーマンス感度に依存します。適度なデバッグで世界の90%は心配する必要はありません。
あなたはいつもあまりにもコードを排除するために、プリプロセッサを使用することができます。
Iは、一般的に、試験よりも生産に高い(より少ない出力)を設定することができる生産にloglevelのBalusCと一致します。私は完全にログを削除すると逆効果になると思います。でも本番でコードエラーが発生し、そしてあなたがを必要の何が起こったかを見つけるためにログ情報ます。
アサート文は、コードの非常に性能の敏感な部分ではもちろんない限り、また、問題のそれだけではありません。あなたはアサート文が(正しく使用している場合)が発生することができない事を確認するために一般的として、それらを完全に除外することができるはずです。しかし、トラブルを通過、それはそれらを取得するには、あるとして少しは本当に必要はありません。
私は個人的にはそれが最も頻繁にテストされているように、ソフトウェアが、生産にインストールされ、開発ソフトウェアにできるだけ近くであることを感じます。