回答編集履歴

2

「実行\(Run As\)」と「デバッグ\(Debug As\)」の使い分けについて を追加

2016/02/20 15:49

投稿

kozuchi
kozuchi

スコア1193

answer CHANGED
@@ -20,3 +20,41 @@
20
20
 
21
21
  この状態でブレークポイントを設定してデバッグ実行しようとすると、以下のようなエラーダイアログが表示されます。
22
22
  ![デバッグ情報が無い場合のエラーダイアログ](7620618c468693ce78b1d32dc544377d.png)
23
+
24
+ 「実行(Run As)」と「デバッグ(Debug As)」の使い分けについて
25
+ ---
26
+ 開発チームの意図を直接ドキュメントで読んだわけではないですが、
27
+ 使っている感覚としては、「「実行」と同じことを(条件を変えずに)デバッガ上で実行する」というイメージで使っています。
28
+
29
+ これは、Eclipse のような IDEを使う以前に、
30
+ コマンドラインで開発していたときのやり方の延長です。
31
+
32
+ コマンドライン開発では、
33
+
34
+ - 単に実行するとき: コンパイラが出力した実行ファイルを直接実行
35
+ - デバッグするとき:同じ実行ファイルをデバッガから起動、
36
+
37
+ というやり方をしていました。
38
+
39
+ デバッグをするときは、デバッガというデバッグのためのプログラムを動かして、
40
+ その上で同じ実行ファイルを動かしていたのです。
41
+ 現在の「デバッグ」で実行してデバッグパースペクティブに切り替えるのは、
42
+ この「デバッガを起動してデバッグをする」というような感覚です。
43
+ やることを切り替えるというより、同じことをブレークポイントなどが効く環境にから実行しなおすという感じです。
44
+
45
+ デバッグ用情報の出力に関して
46
+ ---
47
+ デバッグをするからデバッグ用にコンパイルしなおすというようなことはあまりしていませんでした。
48
+ 開発中はデバッグ情報を ONのままにして、テストが十分終わった後、
49
+ パフォーマンスのためにデバッグ情報を OFF にしたり最適化オプションを ON にしたりしていました。
50
+ 実際には、パフォーマンスを極限まで必要とされる用途(CAD等の科学技術演算)を除いては、
51
+ デバッグ情報を残したまま運用まで行うことも多かったです。
52
+ これは、障害が起きた場合の原因解明のしやすさの方が、多少のパフォーマンス低下よりも重要だと
53
+ 考えられるような場合です。
54
+ 障害が起きたら、障害を起こした時点と同じ実行ファイルをデバッガにかけて障害の原因を調べたのです。
55
+
56
+ 現在の Java のアプリケーションでは、デバッグ情報を外すことはめったにないと考えていいと思います。
57
+ 極限のパフォーマンスを追及するような用途では C/C++ が使われますし、
58
+ 絶対的なパフォーマンスよりも運用の安定性、障害復旧の迅速さといったことの方が
59
+ 重要度が高い場合が多いからです。
60
+

1

\(参考\)デバッグ情報を切るとどうなるか を追加

2016/02/20 15:49

投稿

kozuchi
kozuchi

スコア1193

answer CHANGED
@@ -3,4 +3,20 @@
3
3
  Window->Preferences->Java->Compiler の Classfile Generation
4
4
 
5
5
  を見てみてください。
6
- (Eclipse のバージョン等によって場所は多少違うかもしれません)
6
+ (Eclipse のバージョン等によって場所は多少違うかもしれません)
7
+
8
+ ![Compilerオプションの初期状態](c35fcfe63032835eb0d4e39d725d6db9.png)
9
+
10
+
11
+
12
+
13
+ (参考)デバッグ情報を切るとどうなるか
14
+ ---
15
+
16
+ 例えばプロジェクトローカルの設定で(プロジェクト右クリック->Preference)
17
+ 以下のようにデバッグ情報出力のチェックボックスを外したとします。
18
+
19
+ ![Compilerオプションからデバッグ情報出力を外した状態](18dda26583825732682e718ed8991a11.png)
20
+
21
+ この状態でブレークポイントを設定してデバッグ実行しようとすると、以下のようなエラーダイアログが表示されます。
22
+ ![デバッグ情報が無い場合のエラーダイアログ](7620618c468693ce78b1d32dc544377d.png)