デバッガでアプリを実行する方法を知る
デバッガを使ってプログラムを実行させると、指定した場所で実行を一時停止させたり、1行単位で実行するなどの機能が利用できるようになります。実行方法は、通常のエミュレーターや実機での実行と同じです。ただし「実行」ボタンではなく「デバッグ」ボタンを使い、「デバッグの構成」で「構成」を作成します(実行構成と「構成」を共有することも可能)。
まずは、ソースコードにブレークポイントをつけてみましょう。前回(関連記事)作成したソースコード(MyMainActivity.java)をエディターに表示させます。今後のことを考えて行番号が表示されるようにしておきます。「ウィンドウ」メニューの「設定」を開き、表示されたウィンドウの左側の領域から「一般」→「エディタ」→「テキスト・エディタ」を開きます。
右側の領域に「行番号の表示」というチェックボックスがあるので、これをオンにします。これでエディターに行番号が表示されるようになりました。では、onCreateメソッドにある「Toast.makeText……」の行にカーソルを持っていき、行番号の左側のところで右クリックします。表示されたメニューに「ブレークポイントの切り替え」というのがあるのでこれを選択します。
すると、そこに青い丸が表示されるようになります。これがブレークポイントで、デバッガで実行させると、ここでプログラムが一旦停止します。
ついでに、デバッグ用のメッセージを組み込んでみましょう。いまの行の次に以下のコードを挿入してください(全体は記事の最後に付属しています)。
Log.d("onCrate","Running");
これは、デバッガのログにメッセージを表示させるためのコードです。このようなコードを埋め込んでおくと、いちいち停止させなくても、どの場所を通過したかがわかるようになります。ただし、このコードのためにはLogオブジェクトをインポートしておかねばなりません。行頭の×印のところで右クリックし、「Logをインポート」を選択してimport文を自動追加させておいてください。
その後、ツールバーにある虫のボタン(デバッグボタン)を押し、適当なエミュレーターで起動してみます。うまくデバッガが起動すると、Eclipseの画面が切り替わります。
Eclipseは目的に応じてウィンドウを配置した「パースペクティブ」という設定を複数持つことができます。切り替わるのはデバッグ用のパースペクティブです。
ウィンドウ左側の中程にソースコードが表示されていて、緑のラインが引かれています。
ここが先ほどブレークポイントを設定したところで、現在そこで停止しています。では、1行進めてみましょう。画面左上の「デバッグウィンドウ」のところにあるツールバーで実行の制御ができます。矢印が逆U字型になっている「ステップオーバー」(ファンクションキーならF6)を使って1行実行させます。すると現在のプログラム位置を表す緑の表示が次の行に移るはずです。
では、実行をそのまま継続させましょう。同じツールバーにある緑色の三角マークである「再開」(F8)をクリックします。これでプログラムは通常の実行状態に戻ります。ただし、デバッガによりいつでも止められる状態なので、通常の実行よりもスピードは遅くなっています。
このとき、ウィンドウ右下の「LogCat」を見ると、先ほど「Log.d」文で指定したメッセージが表示されているはずです。
実行を完全に停止させるには、同じくツールバーにある赤い四角(終了、Ctrl+F2)を押します。プログラムを修正する場合には実行を止める必要があります。
さて、切り替わったパースペクティブを戻す方法ですが、各パースペクティブに対応するボタンはウィンドウの右上に並んでいます。いまは、虫のアイコンがついた「デバッグ」が選択されています。通常の状態に戻すには、その隣にある「Java」ボタンを押します。
今回は実行とデバッグのやり方を解説しました。ここまでできれば、あとは実際にコードを書くだけです。次回は、今回作ったコードを見ながら、Androidのアプリケーションの基本的な動作を見ていきます。
リスト
package com.tyrell_replicants.sample01;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class MyMainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show();
Log.d("onCreate","Running");
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Toast.makeText(this, "onDestory", Toast.LENGTH_SHORT).show();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Toast.makeText(this, "onRestart", Toast.LENGTH_SHORT).show();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Toast.makeText(this, "onResume", Toast.LENGTH_SHORT).show();
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Toast.makeText(this, "onStart", Toast.LENGTH_SHORT).show();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Toast.makeText(this, "onStop", Toast.LENGTH_SHORT).show();
}
}
この連載の記事
-
第11回
スマホ
アプリケーションをAndroidマーケットに登録する -
第10回
スマホ
ブロードキャストへの応答とタイマ割り込み -
第9回
スマホ
Androidアプリで複数の項目を表示するリストビューを使う -
第8回
スマホ
Androidアプリに必要なダイアログを作る -
第7回
スマホ
Androidアプリの設定画面を作成する -
第6回
スマホ
Androidアプリ内で表示されるメニューを作成する -
第5回
スマホ
インテントによるアプリケーションとアクティビティの呼出し -
第4回
スマホ
Androidアプリを構成する「アクティビティ」を実際に作る -
第3回
スマホ
アプリケーションの基本となる「アクティビティ」 -
第1回
スマホ
Androidアプリの開発環境であるEclipseの使い方を知る - この連載の一覧へ