• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Eclipseデバッガを活用するための31のtips
 

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

on

  • 17,560 views

 

Statistics

Views

Total Views
17,560
Views on SlideShare
10,007
Embed Views
7,553

Actions

Likes
55
Downloads
106
Comments
0

11 Embeds 7,553

http://kompiro.hatenablog.com 6512
https://beat-co-jp.beat-connect.com 990
https://twitter.com 32
http://tweetedtimes.com 6
http://tokage.tumblr.com 5
http://clipin.me 2
http://www.google.co.jp 2
https://kcw.kddi.ne.jp 1
https://www.google.co.jp 1
https://www.chatwork.com 1
http://plus.url.google.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • Eclipseデバッガを活用す るための31のTips 近藤寛喜(@kompiro) kompiro@gmail.com Thanks @shuji_w6e 13年9月29日日曜日
    • 目的 Java開発でEclipseを使ってるエンジニアがデバ ッグ時に知っておくと得なTipsをまとめました。 Q&A形式です。 基本編と応用編があります。 基本編でも、まとめている時に「これはいい」と 思った機能があったので、そちらも是非目を通し てくだされば。 デバッグ例のソースコードは https:// github.com/kompiro/debug-donutstore に公開 13年9月29日日曜日
    • 基本編 13年9月29日日曜日
    • Q1.デバッグするにはどう すればよいですか? 13年9月29日日曜日
    • 1.ブレークポイントを設定 します 設定したい行の左端をダブルクリック 13年9月29日日曜日
    • 2. Debug Launcherから起 動します。 ツールバー上にある虫アイコンをクリック 13年9月29日日曜日
    • 3. パースペクティブの切 り替えを勧められます。 デバッグ時はデバッグ用のパースペクティブにし ましょう(Yesを選んでください。) 13年9月29日日曜日
    • 4. 設定した場所からデバ ッグが開始されます。 緑色の行が、実行中の行です。 13年9月29日日曜日
    • 5. 設定した場所からデバ ッグが開始されます。 デバッグビュー(Debug)もこんな感じになります。 13年9月29日日曜日
    • Q2.毎回デバッグパースペ クティブへの切り替えを聞 かれて鬱陶しいです。な んとかなりませんか? Thanks @yujiorama 13年9月29日日曜日
    • A.ダイアログにチェックを 入れると出なくなります。 13年9月29日日曜日
    • Q3.デバッグパースペクテ ィブにはどんなビューが ありますか? 13年9月29日日曜日
    • A.基本はこんな感じ 13年9月29日日曜日
    • 下記を追加しておくと便利 Display(表示)ビュー Expressions(式)ビュー この2つは後で解説します。 13年9月29日日曜日
    • Q4. 実行中の変数の値を 見るにはどうすればよい ですか? 13年9月29日日曜日
    • A1.変数ビュー(Variables) で見る 変数ビューではオブジェクトの内容を見られるよ 13年9月29日日曜日
    • A2. Inspectを実行する 1.見たい変数(下例:store)を選択して、右クリック 2. Inspectを選択 13年9月29日日曜日
    • A3. 式(Expressions)ビュ ーで監視 1.監視したい変数(下例:donuts)を選択して、右クリック 2. Watchを選択 13年9月29日日曜日
    • 式が書ける。 ちなみに式ビューでは 13年9月29日日曜日
    • Q5. 実行中の変数の値を 書き換えるにはどうすれば よいですか? 13年9月29日日曜日
    • A1. 変数ビューから書き 換えます。 1.該当の変数を探しだす 2.右クリック->Change Value... 13年9月29日日曜日
    • A2. 表示(Display)ビュー から書き換えます。 1.Displayビューを表示(Window->Views->Display) 2.コードを入力、選択し、Execute 13年9月29日日曜日
    • Q6. 実行中のブレークポ イントを一時的に無効にで きますか? 13年9月29日日曜日
    • A1.ブレークポイントの 無効化 1.Shift+ダブルクリック 13年9月29日日曜日
    • A1.ブレークポイントの 全無効化 1.ツールバー上のSkip All Breakpointsをクリック 13年9月29日日曜日
    • Q7. 便利なショートカット を教えて下さい。 13年9月29日日曜日
    • A1.Step Into(F5) 実行中のメソッドの中に入ります。 ←のアイコンでもOK 13年9月29日日曜日
    • A2.Step Over(F6) 次の処理に移ります。 ←のアイコンでもOK 13年9月29日日曜日
    • A3.Step Return(F7) 現在のメソッド処理を終えます。 ←のアイコンでもOK 13年9月29日日曜日
    • A4.Resume(F8) 次のブレークポイントまで処理を飛ばします。 ←のアイコンでもOK 13年9月29日日曜日
    • A5.Run to Line(Ctrl+R) カーソルのある行まで処理を飛ばします。 右クリックからも実行可(Mac:Command+R) 13年9月29日日曜日
    • A6.Toggle Breakpoint(Ctrl+Shift+B) ブレークポイントを設定/解除します (Mac:Command+Shift+B) 13年9月29日日曜日
    • A7.Disable Breakpoint(Shift+Double Click) ブレークポイントを無効にします 13年9月29日日曜日
    • A8.Debug(F11) 前回実行したデバッグを再実行します。 (Mac:Command+F11) 13年9月29日日曜日
    • Q8.クラスにブレークポイ ントを貼るとどうなります か? 13年9月29日日曜日
    • A.クラスロード時に停止 13年9月29日日曜日
    • Q9.フィールドにブレーク ポイントを貼るとどうなりま すか? 13年9月29日日曜日
    • A.フィールドにアクセス/ 更新があった時に停止 13年9月29日日曜日
    • Q10.フィールドを更新した 時にのみ停止するように するには、どうしたらいい ですか? 13年9月29日日曜日
    • A.ブレークポイントのプロ パティで調整 13年9月29日日曜日
    • Q11.メソッドにブレークポ イントを貼るとどうなります か? 13年9月29日日曜日
    • A.メソッド呼び出し時に 停止 13年9月29日日曜日
    • Q12.mainが呼び出されるタ イミングで停止させるには どうしたらいいですか? 13年9月29日日曜日
    • A1.mainメソッドにブレーク ポイントを貼る 13年9月29日日曜日
    • A2.デバッグのランチャー に指定する 13年9月29日日曜日
    • Q13.methodがreturnされ るタイミングで停止できま せんか? 13年9月29日日曜日
    • A.メソッドのブレークポイ ントのプロパティで指定で きます。 13年9月29日日曜日
    • Q14.例外が発生したタイミ ングで停止できません か? 13年9月29日日曜日
    • A.ブレークポイントビュー から指定できます。 13年9月29日日曜日
    • 応用編 13年9月29日日曜日
    • Q15. 実行中にコードを書 き換えると、自動で処理を 置き換えられませんか? 13年9月29日日曜日
    • A. デバッグ中はホットコ ードリプレースが有効 ホットコードリプレースとは、実行中のコードを書き 換えられる機構です。 ※メソッド等のシグネチャ(クラスやメソッドの名前 やパラメータ名、型の指定)が変わると、リプレース が無効になり、下記のダイアログを表示。 13年9月29日日曜日
    • Q16. 実環境でデバッグで きませんか? 13年9月29日日曜日
    • A.リモートデバッグしまし ょう リモートデバッグとは、他のJVMをデバッグする事 です。 JDWP(Java Debug Wire Protocol)を使って通信 できるように起動時に指定します。 他のマシンのJVMとも通信できます。 知っておくと結構べんり。(ant等のデバッグ) 動作しているJVMのクラスを書き換えないとホット コードリプレースはされない点は注意 13年9月29日日曜日
    • A.リモートデバッグしまし ょう アプリ側の引数例 -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost=44000 13年9月29日日曜日
    • 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日日曜日
    • A.リモートデバッグしまし ょう デバッガ側 Debug Configurations...を開く(虫アイコンの右の下三角から) 13年9月29日日曜日
    • Q17.実環境でmainが実行さ れた直後からデバッグする 方法はありませんか? 13年9月29日日曜日
    • 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日日曜日
    • Q18.間違えてStep Overし 過ぎました。もう一度デバ ッグをやり直すしかありま せんか? 13年9月29日日曜日
    • A.Drop to Frameする 呼び出しスタック上のFrameを捨てると、そのメソッ ドが呼び出される前に戻ります。 ←このアイコンをクリック 13年9月29日日曜日
    • A.Drop to Frameする 注意:DBなどの外部リソースのデータや、staticな フィールド等は元に戻りません。 13年9月29日日曜日
    • Q19.呼び出し元のメソッド の状態を知ることはできま せんか? 13年9月29日日曜日
    • A.Frameを選びましょう。 呼び出しスタック上のFrameを選択すると、Valuables ビュー等選択したフレームの中のものになります。 13年9月29日日曜日
    • Q20.呼び出し階層をブロ グに貼りたいです。どうす ればできますか? Thanks @n3104 13年9月29日日曜日
    • 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日日曜日
    • Q21.ブレークポイントに指 定した回数処理が通った 時に止まるように、ブレー クポイントを貼るにはどう すればよいですか? 13年9月29日日曜日
    • A.BreakpointにHit Count を指定しましょう。 ブレークポイントに止まる回数を数えてデバッグす るような状況に重宝します。 13年9月29日日曜日
    • Q22.ある条件を満たす 時、初めて止まるようにブ レークポイントを貼るには どうすればよいですか? 13年9月29日日曜日
    • A.Breakpointのプロパティ から条件を指定しましょう。 実行した結果、trueを返した時、停止します。 13年9月29日日曜日
    • Q23.ある変数が変更され た時に停止するには、どう いう条件を設定すればよ いですか? 13年9月29日日曜日
    • A.Breakpointのプロパティ から条件を指定しましょう。 実行した結果、指定した変数が変わった時、停止し ます。 13年9月29日日曜日
    • Q24.参照しているオブジ ェクトを見る方法はありま せんか? 13年9月29日日曜日
    • A.変数ビューで「Show References」を選びましょう 13年9月29日日曜日
    • Q25.変数ビューの表示が 分かりやすく変更できませ んか? 13年9月29日日曜日
    • A.Detail Formatterを使い ましょう。 13年9月29日日曜日
    • Q26. sun.*やjava.*等の パッケージのクラスには Step Inしたくありません。 飛ばす方法はありません か? 13年9月29日日曜日
    • A.Step Filteringを使いま しょう。 13年9月29日日曜日
    • Q27.複数のスレッドによる 競合のデバッグをするに はどうすればよいです か? 13年9月29日日曜日
    • A.スレッド停止を選択し、複 数の処理を同時にデバッ グしましょう。 13年9月29日日曜日
    • Q28.バックグラウンドで行 われる処理がデバッグを 邪魔します。どうすればデ バッグしている処理だけ に限定できますか?? 13年9月29日日曜日
    • A.VM停止を選択し、デバッ グ中は他の処理を停止しま しょう。 13年9月29日日曜日
    • Q29. 起動引数を知る方法 はありませんか? 13年9月29日日曜日
    • A.デバッグビューから起動 引数を調べられます。 13年9月29日日曜日
    • Q30. 特定のインスタンス に注目してブレークポイン トを貼ることはできません か? Thanks @matobaa 13年9月29日日曜日
    • A.変数ビューのインスタン スからブレークポイントを 指定できます。 13年9月29日日曜日
    • A.変数ビューのインスタン スからブレークポイントを 指定できます。 13年9月29日日曜日
    • Q31.ソースコードを修正す ることなく、コンソールに 値を出力することはできま すか? 13年9月29日日曜日
    • A.できます 13年9月29日日曜日
    • おしまい 誤字脱字、もっとこうしたらいい等、フィードバッ クがあればkompiro@gmail.comにお寄せください。 13年9月29日日曜日
    • 謝辞 フィードバックをお寄せくださった方(スライド順) @shuji_w6e, @yujiorama, @n3104, @matobaa 13年9月29日日曜日