SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

20年経ってもデファクトスタンダードIDEのEclipse入門

Eclipseでのデバッグ方法~プロジェクトの削除と復活

20年経ってもデファクトスタンダードIDEのEclipse入門 第3回

  • X ポスト
  • このエントリーをはてなブックマークに追加

デバッグ実行の活用

 ブレークポイントとデバッグ実行の基礎を理解してもらえたところで、応用させていきましょう。

ブレークポイントは複数設置できる

 ブレークポイントは、いくつも設置することが可能です。例えば、図10は、7行目(リスト1では(3))だけでなく、9行目(リスト1では(5))にもブレークポイントを設置した画面です。

図17:ブレークポイントを2カ所に設置した画面
図10:ブレークポイントを2カ所に設置した画面

 この状態でデバッグ実行をすると、図6と同様に1カ所目のブレークポイント(7行目)で処理が一時停止されます。その状態で、ボタン(再開ボタン)をクリックすると、次のブレークポイントまで実行され、そこで一時停止します(図11)。

図18:2カ所目のブレークポイントで処理が一時停止した画面
図11:2カ所目のブレークポイントで処理が一時停止した画面

 図8の変数ビューとは違い、7行目(リスト1では(3))や8行目(リスト1では(4))で用意した変数addや変数ansが増えているのが確認できます。このように複数のブレークポイントを設置し、それぞれで処理を一時停止→再開を繰り返し、変数の値を確認することで、より効率よくデバッグが行えます。

ブレークポイントの除去

 設置したブレークポイントを除去する場合は、ブレークポイントを表すアイコンをダブルクリックするだけです。ただし、さまざまなファイルのありとあらゆる箇所にブレークポイントを設置した場合、どこに設置したかわからなくなることも多々あります。

 場合によっては、ブレークポイントを除去し忘れて、デバッグ実行時に思わぬところで処理が一時停止されてしまうこともあります。そのような場合に便利なのが、ブレークポイントビューです。デバッグパースペクティブでは、デフォルトで変数ビューの横にタブが配置されています(図12)。

図19:ブレークポイントビュー
図12:ブレークポイントビュー

 このビューでは、現在のワークスペース中に存在するブレークポイントが一覧表示されます。リストからブレークポイントを選択し、ボタン(選択ブレークポイントの除去ボタン)をクリックすると、そのブレークポイントが除去されます。さらに、ボタン(全ブレークポイントの除去ボタン)をクリックすると、全てのブレークポイントが除去されます。

処理を1行ずつ実行するステップオーバー

 処理の一時停止→再開の究極形は、1行ずつ処理を行うことです。場合によっては、そのようなデバッグ実行をしたい場合もあります。となると、各行にブレークポイントを設置しなければならないように思いますが、Eclipseには1行ずつ処理を行う機能があります。それが、ステップ実行です。

 例えば、図13は6行目(リスト1では(2))にブレークポイントを設置し、そこで処理が一時停止されている状態です。

図22:6行目で処理が一時停止している画面
図13:6行目で処理が一時停止している画面

 この状態で、ツールバー上のボタン(ステップオーバーボタン)をクリックすると、6行目(リスト1では(2))の処理が実行され、7行目(リスト1では(3))で処理が一時停止します(図14)。

図23:1行だけ処理が実行され7行目で処理が一時停止している画面
図14:1行だけ処理が実行され7行目で処理が一時停止している画面

 変数タブでは、図13にはなかった変数num2の値が表示されています。このように、コード1行ずつ処理を行いながら、変数の値を確認できるのがステップオーバーです。

メソッド内部の処理をステップ実行できるステップイン

 このステップオーバーを繰り返していき、8行目(リスト1では(4))で一時停止している状態でステップオーバーボタンをクリックすると、8行目の処理が実行されて、9行目で一時停止となります。これは、正常な動作です。

 一方、8行目ではAdditionクラスのplus()メソッドを呼び出しています。つまり、この行での実際の処理は、plus()メソッド内に処理が移管されているということであり、そこでさらに複数行の処理が行われていることになります。この呼び出し先メソッドでもステップ実行をしたい場合に利用するのが、ボタンのステップインです。実際に行ってみましょう。図15は、8行目(リスト1では(4))で一時停止している状態です。

図24:8行目で処理が一時停止している画面
図15:8行目で処理が一時停止している画面

 ここで、ボタン(ステップインボタン)をクリックします。すると、画面が図16のように変わり、Additionクラスのplus()メソッド内をステップ実行している画面になります。

図25:Additionクラスのplus()メソッドをステップ実行している画面
図16:Additionクラスのplus()メソッドをステップ実行している画面

 もちろん、この画面でステップオーバーを行うことで、メソッド内の処理を1行ずつ行うことが可能です。試しに、図16の状態でボタン(ステップオーバーボタン)をクリックすると、図17の画面になります。

図26:plus()メソッド内最終行で一時停止している画面
図17:plus()メソッド内最終行で一時停止している画面

 これは、plus()メソッド内の最終行で一時停止している状態です。ここでさらにステップオーバーを実行すると、図15の画面に戻ります。これで、処理が元のmain()メソッドに戻ったことがわかります。

 このようにして、ブレークポイントとステップ実行を活用することで、非常に効率よくデバッグできるようになります。

次のページ
プロジェクトの削除とインポート

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
20年経ってもデファクトスタンダードIDEのEclipse入門連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/13509 2021/02/09 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング