Location via proxy:
[ UP ]
[Report a bug]
[Manage cookies]
No cookies
No scripts
No ads
No referrer
Show this form
Submit Search
Eclipseデバッガを活用するための31のtips
•
81 likes
•
52,228 views
Hiroki Kondo
Follow
1 of 91
Download now
More Related Content
Eclipseデバッガを活用するための31のtips
1.
Eclipseデバッガを活用す るための31のTips 近藤寛喜(@kompiro) kompiro@gmail.com Thanks @shuji_w6e 13年9月29日日曜日
2.
目的 Java開発でEclipseを使ってるエンジニアがデバ ッグ時に知っておくと得なTipsをまとめました。 Q&A形式です。 基本編と応用編があります。 基本編でも、まとめている時に「これはいい」と 思った機能があったので、そちらも是非目を通し てくだされば。 デバッグ例のソースコードは https:// github.com/kompiro/debug-donutstore に公開 13年9月29日日曜日
3.
基本編 13年9月29日日曜日
4.
Q1.デバッグするにはどう すればよいですか? 13年9月29日日曜日
5.
1.ブレークポイントを設定 します 設定したい行の左端をダブルクリック 13年9月29日日曜日
6.
2. Debug Launcherから起 動します。 ツールバー上にある虫アイコンをクリック 13年9月29日日曜日
7.
3. パースペクティブの切 り替えを勧められます。 デバッグ時はデバッグ用のパースペクティブにし ましょう(Yesを選んでください。) 13年9月29日日曜日
8.
4. 設定した場所からデバ ッグが開始されます。 緑色の行が、実行中の行です。 13年9月29日日曜日
9.
5. 設定した場所からデバ ッグが開始されます。 デバッグビュー(Debug)もこんな感じになります。 13年9月29日日曜日
10.
Q2.毎回デバッグパースペ クティブへの切り替えを聞 かれて鬱陶しいです。な んとかなりませんか? Thanks @yujiorama 13年9月29日日曜日
11.
A.ダイアログにチェックを 入れると出なくなります。 13年9月29日日曜日
12.
Q3.デバッグパースペクテ ィブにはどんなビューが ありますか? 13年9月29日日曜日
13.
A.基本はこんな感じ 13年9月29日日曜日
14.
下記を追加しておくと便利 Display(表示)ビュー Expressions(式)ビュー この2つは後で解説します。 13年9月29日日曜日
15.
Q4. 実行中の変数の値を 見るにはどうすればよい ですか? 13年9月29日日曜日
16.
A1.変数ビュー(Variables) で見る 変数ビューではオブジェクトの内容を見られるよ 13年9月29日日曜日
17.
A2. Inspectを実行する 1.見たい変数(下例:store)を選択して、右クリック 2. Inspectを選択 13年9月29日日曜日
18.
A3. 式(Expressions)ビュ ーで監視 1.監視したい変数(下例:donuts)を選択して、右クリック 2. Watchを選択 13年9月29日日曜日
19.
式が書ける。 ちなみに式ビューでは 13年9月29日日曜日
20.
Q5. 実行中の変数の値を 書き換えるにはどうすれば よいですか? 13年9月29日日曜日
21.
A1. 変数ビューから書き 換えます。 1.該当の変数を探しだす 2.右クリック->Change Value... 13年9月29日日曜日
22.
A2. 表示(Display)ビュー から書き換えます。 1.Displayビューを表示(Window->Views->Display) 2.コードを入力、選択し、Execute 13年9月29日日曜日
23.
Q6. 実行中のブレークポ イントを一時的に無効にで きますか? 13年9月29日日曜日
24.
A1.ブレークポイントの 無効化 1.Shift+ダブルクリック 13年9月29日日曜日
25.
A1.ブレークポイントの 全無効化 1.ツールバー上のSkip All Breakpointsをクリック 13年9月29日日曜日
26.
Q7. 便利なショートカット を教えて下さい。 13年9月29日日曜日
27.
A1.Step Into(F5) 実行中のメソッドの中に入ります。 ←のアイコンでもOK 13年9月29日日曜日
28.
A2.Step Over(F6) 次の処理に移ります。 ←のアイコンでもOK 13年9月29日日曜日
29.
A3.Step Return(F7) 現在のメソッド処理を終えます。 ←のアイコンでもOK 13年9月29日日曜日
30.
A4.Resume(F8) 次のブレークポイントまで処理を飛ばします。 ←のアイコンでもOK 13年9月29日日曜日
31.
A5.Run to Line(Ctrl+R) カーソルのある行まで処理を飛ばします。 右クリックからも実行可(Mac:Command+R) 13年9月29日日曜日
32.
A6.Toggle Breakpoint(Ctrl+Shift+B) ブレークポイントを設定/解除します (Mac:Command+Shift+B) 13年9月29日日曜日
33.
A7.Disable Breakpoint(Shift+Double Click) ブレークポイントを無効にします 13年9月29日日曜日
34.
A8.Debug(F11) 前回実行したデバッグを再実行します。 (Mac:Command+F11) 13年9月29日日曜日
35.
Q8.クラスにブレークポイ ントを貼るとどうなります か? 13年9月29日日曜日
36.
A.クラスロード時に停止 13年9月29日日曜日
37.
Q9.フィールドにブレーク ポイントを貼るとどうなりま すか? 13年9月29日日曜日
38.
A.フィールドにアクセス/ 更新があった時に停止 13年9月29日日曜日
39.
Q10.フィールドを更新した 時にのみ停止するように するには、どうしたらいい ですか? 13年9月29日日曜日
40.
A.ブレークポイントのプロ パティで調整 13年9月29日日曜日
41.
Q11.メソッドにブレークポ イントを貼るとどうなります か? 13年9月29日日曜日
42.
A.メソッド呼び出し時に 停止 13年9月29日日曜日
43.
Q12.mainが呼び出されるタ イミングで停止させるには どうしたらいいですか? 13年9月29日日曜日
44.
A1.mainメソッドにブレーク ポイントを貼る 13年9月29日日曜日
45.
A2.デバッグのランチャー に指定する 13年9月29日日曜日
46.
Q13.methodがreturnされ るタイミングで停止できま せんか? 13年9月29日日曜日
47.
A.メソッドのブレークポイ ントのプロパティで指定で きます。 13年9月29日日曜日
48.
Q14.例外が発生したタイミ ングで停止できません か? 13年9月29日日曜日
49.
A.ブレークポイントビュー から指定できます。 13年9月29日日曜日
50.
応用編 13年9月29日日曜日
51.
Q15. 実行中にコードを書 き換えると、自動で処理を 置き換えられませんか? 13年9月29日日曜日
52.
A. デバッグ中はホットコ ードリプレースが有効 ホットコードリプレースとは、実行中のコードを書き 換えられる機構です。 ※メソッド等のシグネチャ(クラスやメソッドの名前 やパラメータ名、型の指定)が変わると、リプレース が無効になり、下記のダイアログを表示。 13年9月29日日曜日
53.
Q16. 実環境でデバッグで きませんか? 13年9月29日日曜日
54.
A.リモートデバッグしまし ょう リモートデバッグとは、他のJVMをデバッグする事 です。 JDWP(Java Debug Wire
Protocol)を使って通信 できるように起動時に指定します。 他のマシンのJVMとも通信できます。 知っておくと結構べんり。(ant等のデバッグ) 動作しているJVMのクラスを書き換えないとホット コードリプレースはされない点は注意 13年9月29日日曜日
55.
A.リモートデバッグしまし ょう アプリ側の引数例 -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost=44000 13年9月29日日曜日
56.
A.リモートデバッグしまし ょう それぞれの意味 「-agentlib:jdwp」 JDWP実装のロード指定。 「transport」 通信方法。通常はソケット。Windowsでは共有メモリも指定 可。 「server」
yの場合、起動するJVMがデバッガされる側になります。デバッ グしたいアプリ側はy 「suspend」 yの場合、接続するまでアプリは起動されません。 「address」 接続のためのアドレスです。アプリ側はポートを指定 -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost=44000 13年9月29日日曜日
57.
A.リモートデバッグしまし ょう デバッガ側 Debug Configurations...を開く(虫アイコンの右の下三角から) 13年9月29日日曜日
58.
Q17.実環境でmainが実行さ れた直後からデバッグする 方法はありませんか? 13年9月29日日曜日
59.
A.アプリ起動時の指定を 「suspend=y」にしましょう それぞれの意味 「-agentlib:jdwp」 JDWP実装のロード指定。 「transport」 通信方法。通常はソケット。Windowsでは共有メモリも指定 可。 「server」
yの場合、起動するJVMがデバッガされる側になります。デバッ グしたいアプリ側はy 「suspend」 yの場合、接続するまでアプリは起動されません。 「address」 接続のためのアドレスです。アプリ側はポートを指定 -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost=44000 13年9月29日日曜日
60.
Q18.間違えてStep Overし 過ぎました。もう一度デバ ッグをやり直すしかありま せんか? 13年9月29日日曜日
61.
A.Drop to Frameする 呼び出しスタック上のFrameを捨てると、そのメソッ ドが呼び出される前に戻ります。 ←このアイコンをクリック 13年9月29日日曜日
62.
A.Drop to Frameする 注意:DBなどの外部リソースのデータや、staticな フィールド等は元に戻りません。 13年9月29日日曜日
63.
Q19.呼び出し元のメソッド の状態を知ることはできま せんか? 13年9月29日日曜日
64.
A.Frameを選びましょう。 呼び出しスタック上のFrameを選択すると、Valuables ビュー等選択したフレームの中のものになります。 13年9月29日日曜日
65.
Q20.呼び出し階層をブロ グに貼りたいです。どうす ればできますか? Thanks @n3104 13年9月29日日曜日
66.
A.デバッグビューは コピペ可能 貼り付け例 DonutsStore [Java Application]! !
debug.DonutsStore at localhost:51724! ! ! Thread [main] (Suspended)! ! ! ! DonutsStore.welcome() line: 17! ! ! ! Customer.enter(DonutsStore) line: 17! ! ! ! DonutsStore.main(String[]) line: 10! ! /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/bin/java (2013/09/25 21:46:02)! 13年9月29日日曜日
67.
Q21.ブレークポイントに指 定した回数処理が通った 時に止まるように、ブレー クポイントを貼るにはどう すればよいですか? 13年9月29日日曜日
68.
A.BreakpointにHit Count を指定しましょう。 ブレークポイントに止まる回数を数えてデバッグす るような状況に重宝します。 13年9月29日日曜日
69.
Q22.ある条件を満たす 時、初めて止まるようにブ レークポイントを貼るには どうすればよいですか? 13年9月29日日曜日
70.
A.Breakpointのプロパティ から条件を指定しましょう。 実行した結果、trueを返した時、停止します。 13年9月29日日曜日
71.
Q23.ある変数が変更され た時に停止するには、どう いう条件を設定すればよ いですか? 13年9月29日日曜日
72.
A.Breakpointのプロパティ から条件を指定しましょう。 実行した結果、指定した変数が変わった時、停止し ます。 13年9月29日日曜日
73.
Q24.参照しているオブジ ェクトを見る方法はありま せんか? 13年9月29日日曜日
74.
A.変数ビューで「Show References」を選びましょう 13年9月29日日曜日
75.
Q25.変数ビューの表示が 分かりやすく変更できませ んか? 13年9月29日日曜日
76.
A.Detail Formatterを使い ましょう。 13年9月29日日曜日
77.
Q26. sun.*やjava.*等の パッケージのクラスには Step Inしたくありません。 飛ばす方法はありません か? 13年9月29日日曜日
78.
A.Step Filteringを使いま しょう。 13年9月29日日曜日
79.
Q27.複数のスレッドによる 競合のデバッグをするに はどうすればよいです か? 13年9月29日日曜日
80.
A.スレッド停止を選択し、複 数の処理を同時にデバッ グしましょう。 13年9月29日日曜日
81.
Q28.バックグラウンドで行 われる処理がデバッグを 邪魔します。どうすればデ バッグしている処理だけ に限定できますか?? 13年9月29日日曜日
82.
A.VM停止を選択し、デバッ グ中は他の処理を停止しま しょう。 13年9月29日日曜日
83.
Q29. 起動引数を知る方法 はありませんか? 13年9月29日日曜日
84.
A.デバッグビューから起動 引数を調べられます。 13年9月29日日曜日
85.
Q30. 特定のインスタンス に注目してブレークポイン トを貼ることはできません か? Thanks @matobaa 13年9月29日日曜日
86.
A.変数ビューのインスタン スからブレークポイントを 指定できます。 13年9月29日日曜日
87.
A.変数ビューのインスタン スからブレークポイントを 指定できます。 13年9月29日日曜日
88.
Q31.ソースコードを修正す ることなく、コンソールに 値を出力することはできま すか? 13年9月29日日曜日
89.
A.できます 13年9月29日日曜日
90.
おしまい 誤字脱字、もっとこうしたらいい等、フィードバッ クがあればkompiro@gmail.comにお寄せください。 13年9月29日日曜日
91.
謝辞 フィードバックをお寄せくださった方(スライド順) @shuji_w6e, @yujiorama, @n3104,
@matobaa 13年9月29日日曜日
Download