連載
» 2010年08月20日 00時00分 公開

SDKで始めるiPad/iPhoneアプリ開発の勘所(3):iPhone/iPadアプリ作成の仕上げ・国際化・デバッグ (3/4)

[竹内彰吾,株式会社ビーブレイクシステムズ]

iPhone/iPadアプリをデバッグするには

 実際に開発を進めていくとアプリが意図したとおりに動かない場面にたびたび遭遇します。このような場合、原因を調査し修正するためのデバッグ作業を行う必要があります。ここでは、BMI計算アプリを例に、Xcodeのデバッガの使用方法について説明します。

 例として、下記のようにBMIの計算式を間違えていることに気付かないまま、実装を進めてしまったとします。

    // BMI = 体重(kg)÷ (身長(m) × 身長(m))
    float bmi = weight / (weight * height); // ← 正しくはweight / (height * height);

 この状態でアプリを実行し計算ボタンを押すと、下記のようにBMI計算結果がデタラメになってしまいます。

 このようにプログラムが予期しない動作をした場合は、デバッガの出番です。デバッガを利用すると、プログラムを実行しながらバグの原因を探れます。

ブレークポイントを追加する

 実行中のプログラムを途中で止め、変数の中身を確認するのがデバッガの基本的な使い方を説明します。今回は、executeCalcメソッド内の、変数に身長の値を格納する行で処理を中断することにしました。

 プログラムを中断するブレークポイントを設定するには、中断したい行の行数の部分をクリックします。すると、下記のように行番号が青くなりブレークポイントが設定されます。

 また、[グループとファイル]の一番下にある[ブレークポイント]を選択すると、画面上部にブレークポイントの一覧が表示されます。

 ブレークポイントを有効にしてアプリを起動するには、[ビルド]→[ビルドとデバッグ]をクリックします(または、[command]+[Enter]キー)。

 シミュレータが起動したら、計算ボタンを押して、設定したブレークポイントで処理が中断することを確認しましょう。

 Xcodeのウィンドウ左上の[デバッガ]アイコンをクリックすると、デバッガウィンドウに切り替わります。デバッガウィンドウでは、指定したブレークポイントで処理が中断し、変数などの情報が表示されているのが分かります。

  • 【A】スレッドリスト
     現在実行中のスレッドのコールスタックが表示される
  • 【B】変数リスト
     現在のスコープ内にある変数の一覧。変数が現在保持している値の確認もできる
  • 【C】テキストエディタ
     デバッグ中のソースコードを表示。現在、実行中断している行がハイライトで表示される
  • 【D】ステータスバー
     デバッグ中のセッションのステータスを表示

 デバッガで処理中断中に[ステップオーバー]をクリックすると、中断していたプログラムを1行進めることができます(ショートカットキーは連載第1回の「いまさら聞けないiPhone/iPadアプリの作り方の基礎」を参照してください)。

 ステップオーバーを2回行ってプログラムを進めたところ、変数heightとweightの値は正しく設定されているが、BMI計算後に予期しない値が変数bmiに設定されていることが分かりました。これで、BMI計算の行に誤りがあると気付くことができます。

 以上が、基本的なデバッガの使い方です。

デバッグを助ける強力な機能

 Xcodeは、ほかにもデバッグを助ける強力な機能をいくつか持っています。以下に、その一部を紹介します。

  • 条件付きブレークポイント
    ブレークポイント一覧の[条件]に書いた式がTrueの場合のみ、処理を中断。下記の例では、変数weightの値が80より大きいときのみ中断するようになっている
  • ブレークポイントアクション
    ブレークポイント到達時に、処理の中断だけでなく、音を鳴らしたり、スクリプトを実行したりできる。ブレークポイント一覧右端のチェックを入れると、処理を止めずに、アクションだけ実行する
  • 内蔵ブレークポイントブレークポイント
    ブレークポイント到達時に処理を止めずに、ログを出力したり、音を鳴らしたりできる。ブレークポイントアクションと似た機能。ブレークポイントを設定した行番号を[control]キーを押しながらマウスでクリックして設定
  • 変数の監視
    デバッグウィンドウの変数一覧で変数を[control]キーを押しながらマウスでクリックし、[変数の監視]を選択すると、以降、変数の値が変更されるごとにブレークするようになる

 デバッグは複雑なアプリケーションを開発する際には必須の作業です。Xcodeの機能を生かして、効率的なデバッグを目指しましょう。

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。