Android Studio最速入門~効率的にコーディングするための使い方

第39回 デバッガについて

この記事を読むのに必要な時間:およそ 8 分

ブレイクポイントの操作

エディタの左端(ガーターエリア)をクリックすることでブレイクポイントのON/OFFができますが,ブレイクポイントを消すのではなく,ブレイクポイントを無効化したい場合は,ALT(opt)キーを押しながらブレイクポイントをクリックします。

図19 無効化されたブレイクポイント

図19 無効化されたブレイクポイント

エディタのガーターエリアをクリックして設定できるブレイクポイントは「行ブレイクポイント」だけなのですが,Android Studioが設定できるブレイクポイントは他にも種類があります。Android Studioが設定できるブレイクポイントは次のとおりです。

  • 行ブレイクポイント(Line Breakpoints)
  • メソッドブレイクポイント(Method Breakpoints)
  • フィールドウォッチポイント(Field Watchpoints)
  • 例外ブレイクポイント(Exception Breakpoints)

メソッドブレイクポイントやフィールドブレイクポイントの設置は「Run」メニューから行います。

図20 ⁠Run」メニューにあるブレイクポイント系のコマンド

図20 「Run」メニューにあるブレイクポイント系のコマンド

例外ブレイクポイントに関してはブレイクポイントの設定画面("View Breakpoints..."を実行すると表示される)からでしか設定できません。

どれもブレイクポイントには変わりありませんが,プログラムを止める条件や振る舞いが異なるためそれぞれ異なるブレイクポイントとして提供しています。ブレイクポイントの条件にその違いが見て取れます。

ブレイクポイントの設定変更は"View Breakpoints..."から呼び出す「Breakpoints」ダイアログから行いますが,ガーターエリア上のブレイクポイントを右クリックすると簡易な設定ができるポップアップが表示されます。

この設定ポップアップを元に,それぞれのブレイクポイントの特徴を紹介します。

行ブレイクポイント
もっとも頻繁に使うブレイクポイントで,プログラムの実行が指定した行に来たらプログラムを一時停止します。
メソッドの宣言文に設定すれば,そのメソッドを呼び出した時に反応してプログラムを一時停止します(呼出しのみですが限定的なメソッドブレイクポイントとしても機能するわけです)⁠またクラスの宣言文に設定すると,そのクラスがロードするタイミングでプログラムを一時停止します。
設定項目もいたってシンプルです。

図21 行ブレイクポイントの設定ポップアップの例

図21 行ブレイクポイントの設定ポップアップの例

「Run」メニューにある"Toggle Temporary Line Breakpoint"は一度とまったら消えて無くブレイクポイントのことです。実体は通常の行ブレイクポイントにオプション「Remove once hit」が設定されているだけです。

図22 ⁠Temporary Line Breakpoint」の例

図22 「Temporary Line Breakpoint」の例

メソッドブレイクポイント
メソッドに特化したブレイクポイントです。メソッドの宣言文にしか設置できません。プログラムを停止する条件として,次の2つを設定できます。
  • メソッドを呼び出した時(Method entry)
  • メソッドが終了した時(Method exit)

図23 メソッドブレイクポイントの設定ポップアップの例

図23 メソッドブレイクポイントの設定ポップアップの例

フィールドウォッチポイント
フィールドに特化したブレイクポイントです。フィールド宣言文に行ブレイクポイントを設定すると,そのフィールドの初期化時にプログラムを一時停止します。
フィールドウォッチポイントの場合,そのフィールドの値が参照された(Field access)⁠更新された(Field modification)かによってプログラムを一時停止します。

図24 フィールドウォッチポイントの設定ポップアップの例

図24 フィールドウォッチポイントの設定ポップアップの例

残念なことに,Androidアプリケーションのデバッグでは,このフィールドウォッチポイントは機能しませんでした。
例外ブレイクポイント
例外に特化したブレイクポイントです。指定した例外が送出されるとプログラムを一時停止します。
例外ブレイクポイントはエディタ上には現れません。⁠Breakpoints」ダイアログから「Exception Breakpoints」を追加して設定します。

図25 ⁠Exception Breakpoints」を追加する

図25 「Exception Breakpoints」を追加する

※この後,監視対象とする例外クラスを選択するダイアログが表示されます。

あらかじめ設定されている「Any exception」を有効にしてもよいです。この場合,すべての例外が監視対象になります。

図26 ⁠Any exception」を有効にする

図26 「Any exception」を有効にする

すべてのブレイクポイントを一時的に無効にしたい場合は「Debugツールウィンドウ」の"Mute Breakpoints"を実行します。

図27 ブレイクポイントのミュート(無効化)

図27 ブレイクポイントのミュート(無効化)

このコマンド(アイコン)はトグルになっているので,ミュートしたなら,もう一度"Mute Breakpoints"を実行するまで解除されません。

"Mute Breakpoints"とは若干機能が異なるのですが「Breakpoints」ダイアログから任意のブレイクポイントを無効化することもできます。ダイアログ左上のツールバーでブレイクポイントをグループ化しておくと,ある程度範囲を絞り込んだ無効化ができます。

図28 ⁠Breakpoints」ダイアログからブレイクポイントを無効化する(クリックすると動きがわかります)

「⁠Breakpoints」ダイアログからブレイクポイントを無効化する` &title=`図28 ⁠Breakpoints」ダイアログからブレイクポイントを無効化する` &width=`400` />

素早くトレースログを設定する

いくら時代が進もうと古典的なトレースログ(デバッグプリント)はデバッグの強い味方です。エディタ上で行ブレイクポイントを設定するときに,SHIFTキーと一緒にマウスをクリックすると図29のようなログ出力付きのブレイクポイントが設置されます。

図29 トレースログ用のブレイクポイント

図29 トレースログ用のブレイクポイント

この方法(SHIFT+クリック)で設置したブレイクポイントは,設置した行の情報をログに書き出すだけでなく,ブレイクポイントに到達してもプログラムを停止させません。そのため,プログラムはするする動き,どこを通ったかがログに出力されるだけ,という変わり種のブレイクポイントです。

図30 ⁠Debugペイン」に出力されたトレースログ

図30 「Debugペイン」に出力されたトレースログ

比較的しょうもない系の機能ですが,気楽に設置(SHIFT+クリック)できることと,ソースコード自体をデバッグプリントで汚さないので,個人的に気に入っている機能のひとつです。

著者プロフィール

今井勝信(いまいまさのぶ)

システムエンジニア。日本ユニシス株式会社所属。仙台在住。

Android開発はまったくやったことがないけれどIntelliJ IDEAが大好き。

Twitter: @masanobuimai

コメント

コメントの記入