iOS アプリのデバッグ術 ~値の出力と代入~
便利な 2 つの LLDB コマンド
デバッグ時に覚えておくと便利な、以下 2 つのコマンドを紹介します。
- po
- expression
知ってる人は知っている。知らない人は覚えてね。
本記事はどちらかと言うと知らない人向けのシンプルなものです。
サンプルアプリ
デバッグ用にこんなアプリを作ってみました。
class ViewController: UIViewController { @IBOutlet weak var label: UILabel! var isOk = false override func viewDidLoad() { super.viewDidLoad() judgment() } @IBAction func refresh(_ sender: Any) { judgment() } private func judgment() { let text = isOk ? "OK" : "NG" label.text = text } }
Bool 型のフラグ変数 isOk
によって画面に表示する文字列が変わるというアプリです。(フラグのデフォルト値は false
)
フラグの判定処理は起動時と画面右上の更新ボタンタップ時に実行されます。
このサンプルを利用し、説明します。
po
コマンド po は print object の略で、オブジェクトの値を出力するコマンドです。
上記サンプルコードの 16 行目にブレークポイントを設定し、処理を止めます。
この時デバッグエリアで po <式>
と入力することで、その式の中身を表示することができます。
po isOk
という入力で変数 isOk の値 false が確認できます。
また、1 行ステップオーバーしてから po text
と入力すると、その中身が NG という文字列であることもわかります。
値の確認はよく行う作業なので、このコマンドは確実に覚えておきましょう。
expression
コマンド expression は後に続く式を評価するコマンドです。
こちらは expression <式> = <値>
と入力することで、その式に値を代入することができます。
ここでは上記サンプルコードの 16 行目で expression isOk = true
と入力し、isOk の値を true に書き換えています。
続いてコマンド po isOk
で isOk の値が true になっていることが確認できます。
これにより、次の行で text
の値が OK に設定されることも確認できます。
画面も更新されました。
まとめ
- 値の出力:
po <式>
- 値の代入:
expression <式> = <値>
シンプルですが、非常に強力なデバッグコマンドです。
アプリ開発の際は積極的に使っていきましょう。