Your SlideShare is downloading. ×
Eclipseデバッガを活用するための31のtips
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Eclipseデバッガを活用するための31のtips

21,405
views

Published on

Published in: Technology

0 Comments
59 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
21,405
On Slideshare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
133
Comments
0
Likes
59
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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日日曜日