Xcodeでデバッグするときに、debugエリアからLLDBコマンドを使うことはよくあると思います。

その中でも"po"は最もよく使うコマンドだと思います。"po"は変数の値をdebugエリアに表示するコマンドで、ブレークポイントを置いて処理の途中に変数にどのような値が入っているかを確認することができます。

ただ、なぜ"po"という名前なのかも知らずに、CGRect型の値は表示できないじゃないかー不便!とか思っていました。 "po"はオブジェクト型の変数を確認するコマンドなので当たり前です。プリミティブ型の変数を表示するときは"p"コマンドを使います。

つまり、こういうことです。

  • p = print (プリミティブ型の変数の値を見る)
  • po = print object (オブジェクト型の変数の値を見る)

下記のようなソースの場合

    NSDictionary *dic = @{@"str": @"hogehoge"};
    NSString *str = @"fuga";

    CGRect rect = CGRectMake(0.0f, 0.0f, 300.0f, 400.0f);
    CGFloat height = 500.0f;

こんな感じで表示されます。

(lldb) po dic
{
    str = hogehoge;
}
(lldb) p height
(CGFloat) $3 = 500
(lldb) p rect
(CGRect) $4 = origin=(x=0, y=0) size=(width=300, height=400)