SlideShare a Scribd company logo
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日日曜日

More Related Content

PDF
gRPC入門
PPTX
UniRxことはじめ
PPTX
イケてない開発チームがイケてる開発を始めようとする軌跡
PDF
Observableで非同期処理
PDF
怖くないSpring Bootのオートコンフィグレーション
PDF
入社1年目のプログラミング初心者がSpringを学ぶための手引き
PDF
PostgreSQLセキュリティ総復習
PDF
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
gRPC入門
UniRxことはじめ
イケてない開発チームがイケてる開発を始めようとする軌跡
Observableで非同期処理
怖くないSpring Bootのオートコンフィグレーション
入社1年目のプログラミング初心者がSpringを学ぶための手引き
PostgreSQLセキュリティ総復習
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱

What's hot (20)

PDF
コンテナにおけるパフォーマンス調査でハマった話
PDF
REST API のコツ
PDF
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
PDF
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
PDF
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
PDF
UniTask入門
PDF
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
PDF
テストを書こう、Unity編
PPTX
Redisの特徴と活用方法について
PDF
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
PPTX
backlogsでもCI/CDする夢を見る
PDF
Android起動周りのノウハウ
PDF
エンジニアから飛んでくるマサカリを受け止める心得
PPTX
さくっと理解するSpring bootの仕組み
PDF
【TECH×GAME COLLEGE#32】ゼロからリアルタイムサーバーを作るまで
PDF
UniRx完全に理解した
PDF
ワタシはSingletonがキライだ
PDF
決済サービスのSpring Bootのバージョンを2系に上げた話
PPTX
JIRA / Confluence の 必須プラグインはこれだ
コンテナにおけるパフォーマンス調査でハマった話
REST API のコツ
Swagger ではない OpenAPI Specification 3.0 による API サーバー開発
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
UniTask入門
よろしい、ならば自動化だっ! ~自動家の自動化哲学~ #AsianAA
テストを書こう、Unity編
Redisの特徴と活用方法について
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 1
backlogsでもCI/CDする夢を見る
Android起動周りのノウハウ
エンジニアから飛んでくるマサカリを受け止める心得
さくっと理解するSpring bootの仕組み
【TECH×GAME COLLEGE#32】ゼロからリアルタイムサーバーを作るまで
UniRx完全に理解した
ワタシはSingletonがキライだ
決済サービスのSpring Bootのバージョンを2系に上げた話
JIRA / Confluence の 必須プラグインはこれだ
Ad

Viewers also liked (7)

PDF
Aptana zencoding
PDF
Aptana1
PDF
[Japan Tech summit 2017] CLD 023
PDF
[Japan Tech summit 2017] PRD 009
PDF
[Japan Tech summit 2017] CLD 005
PDF
[Japan Tech summit 2017] MAI 002
PDF
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Aptana zencoding
Aptana1
[Japan Tech summit 2017] CLD 023
[Japan Tech summit 2017] PRD 009
[Japan Tech summit 2017] CLD 005
[Japan Tech summit 2017] MAI 002
[AWSマイスターシリーズ] AWS CLI / AWS Tools for Windows PowerShell
Ad

Similar to Eclipseデバッガを活用するための31のtips (20)

PDF
Modeling Workshop
PPTX
活動報告7 d&dなディレクティブを作る-
PPTX
Chainer meetup
PDF
Google mapとgps機能を使ってみた。
PDF
Weekend Androidのススメ
ODP
第8回脆弱性診断入門
PDF
ワークショップ 明日からはじめるアジャイル
PDF
アジャイルマニフェストから見るインセプションデッキ
PPT
Eclipse を使った java 開発 111126 杉浦
PDF
Scrumワークショップ
PDF
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
PDF
GUI Test is (not) necessary
PDF
GCSアジャイル開発を使ったゲームの作り方
PPTX
開発初心者のためのMoodleプラグインの開発と利用(第二部) for Moodle Moot 2015
PDF
Jenkins study 7 2013-01-28
PPTX
New AI Reasoning Model Rivaling OpenAI Trained on Less Than $50 in Compute
PDF
プログラミング初心者の壁の越え方
PDF
ユーザーストーリーワークショップ実践編
PDF
Kifの紹介
PDF
プログラミング勉強会
Modeling Workshop
活動報告7 d&dなディレクティブを作る-
Chainer meetup
Google mapとgps機能を使ってみた。
Weekend Androidのススメ
第8回脆弱性診断入門
ワークショップ 明日からはじめるアジャイル
アジャイルマニフェストから見るインセプションデッキ
Eclipse を使った java 開発 111126 杉浦
Scrumワークショップ
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
GUI Test is (not) necessary
GCSアジャイル開発を使ったゲームの作り方
開発初心者のためのMoodleプラグインの開発と利用(第二部) for Moodle Moot 2015
Jenkins study 7 2013-01-28
New AI Reasoning Model Rivaling OpenAI Trained on Less Than $50 in Compute
プログラミング初心者の壁の越え方
ユーザーストーリーワークショップ実践編
Kifの紹介
プログラミング勉強会

More from Hiroki Kondo (20)

PDF
Coderetreat in KIT 導入資料
PDF
Coderetreat in KIT 資料/
PDF
Coderetreat in KITスポンサー資料
KEY
分散環境でのTrac
KEY
分散環境でのTrac
KEY
10分で出来る!?プラグインライブコーディング
KEY
JRubyでカードアプリを作ろう
KEY
モジュール指向勉強会-コードリーディングを始める前に-
PDF
Javaにおけるモジュラリティ元年
PDF
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
PDF
なぜ今OSGiか
PDF
業務システムで使うSpring Dynamic Modules
PDF
Kanban Vs Scrum日本語版
PPT
どこでもTrac Wiki
PPT
どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)
PDF
HELP ME! 説明書
PPT
Help Me!
PDF
Rodから聞いたことを全部話すぜ
ODP
斜め上行くリッチクライアントの考え方(仮)
ODP
斜め上行くリッチクライアントの考え方(仮)
Coderetreat in KIT 導入資料
Coderetreat in KIT 資料/
Coderetreat in KITスポンサー資料
分散環境でのTrac
分散環境でのTrac
10分で出来る!?プラグインライブコーディング
JRubyでカードアプリを作ろう
モジュール指向勉強会-コードリーディングを始める前に-
Javaにおけるモジュラリティ元年
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
なぜ今OSGiか
業務システムで使うSpring Dynamic Modules
Kanban Vs Scrum日本語版
どこでもTrac Wiki
どこでも Trac Wiki (Moba S Conflicted Copy 2009 07 14)
HELP ME! 説明書
Help Me!
Rodから聞いたことを全部話すぜ
斜め上行くリッチクライアントの考え方(仮)
斜め上行くリッチクライアントの考え方(仮)

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