-
Notifications
You must be signed in to change notification settings - Fork 336
10.1 開発ツール
この章では、開発を進めて行く上で手助けとなる、Xcode付属の開発ツールについて紹介します。
具体的には、
- デバッガ
- パフォーマンス解析ツールであるInstruments
- 静的解析ツール
について紹介します。
解説には、次のプロジェクトを利用します。下記URLよりダウンロードしてXcodeで開いてください。
XcodeにはiOSやOSX向けのコンパイラとしてCLangとLLVMが搭載されており、LLVMのデバッガであるLLDBをXcode上で使うことができます。 この節では、このLLDBを用いたデバッグの手法について紹介します。
ブレークポイントを追加/削除
- ソースコードの行番号をクリック (行数がでない時は 環境設定→Text Editing → Line Numbersにチェックを入れる)
- 追加したい行にカーソルを置いて
⌘+\
のいずれかを行います。
ブレークポイントの管理
デバッガの一覧はNavigatorのBreakPoint navigatorで確認できます。
では、35行目
NSString *str = [self stringFromInteger:i];
にブレークポイントを設定した状態で実行してみましょう。次のような画面で止まると思います。 この画面について解説します。
- Thread list (左側、縦長) スレッドごとのスタックフレームを見ることができます。黒文字の箇所はプロジェクト内でビルドされたもので、クリックすることでスタックにジャンプできます
- DebugArea (下部)
- 変数エリア 停止した段階での変数の値を確認することができます。自動変数、ローカル変数、レジスタを含んだグローバル変数の3種類の変数を閲覧できます。
- コンソールエリア 普段は標準出力が表示されますが、デバッガのコンソールとしても使うことができます。LLDBのコマンドが使えます
詳しくはこちらをご覧下さい
ステップインは、停止中の行が関数だった場合にその関数の中に入りデバッグを続けます。ステップオーバーは関数を無視して次の行に進みます。ともに一行ずつ進めながらデバッグを行う方法です。
Xcodeでは以下のように実行できます。
- ステップイン : F7
- ステップオーバー : F6
一行ずつデバッグを進めているとき、変数の中身は変数エリアで確認することができます。
- NSStringやNSArray, NSDictionaryなどの変数の中身を確認することができます
-
description
というメソッドを実装していた場合その中身を確認することができます - このメソッドはどのクラスでもオーバーライドすることができます。デバッグが煩雑になってきたら書いてみましょう
-
また、メソッドのreturn valueも確認することができます。デバッガのステップアウトを行うと、次のように表示されます。 ステップアウトとは、ステップインした関数から抜けることです。F8で実行できます。
デバッガのコマンドはコンソールより実行することができます。
詳しいコマンドは下記に譲り、ここでは簡単にいくつかのコマンドを紹介します。
http://lldb.llvm.org/lldb-gdb.html
コマンド | 説明 |
---|---|
s, step | ステップイン |
n, next | ステップオーバー |
f, finish | ステップアウト |
h | ヘルプを表示 |
br | ブレークポイントを追加(要引数) |
p foo | ローカル変数 p を表示 |
po (式) | 式を評価 |
po foo | [foo description] を表示 |
bt | スレッドのバックトレースを表示 |
ブレークポイントには、アクションを仕込むことが出来ます。 例えば、ある回数以上ヒットした時にストップする、変数の値を表示し続ける、などが可能です。
ブレークポイントで右クリックをするとEdit Breakpoint が表示されるので、そこから編集可能です。
- condition には条件を入れます。その場で参照できる変数などを利用できます。
- Add Actionでアクションを追加します。
- デバッガのコマンドやLogを指定して出力、AppleScriptなどが利用できます
- Automatically continue after evaluating にチェックを入れると自動的に続行します。
以下は、iが5より大きい時に、停止せずにstrの中身をコンソールに出力するときのブレークポイントです
Instrumentsとは、Xcodeに付属するパフォーマンス解析ツールです。プロセスを追跡したり、アプリケーションの挙動に関するデータを集めることができる、非常に強力なツールです。Instrumentsを使うことで、アプリケーションに関して例えば次の項目を確認することができます。
- メモリの使用量
- リーク、オーバーリリースなインスタンス
- メソッドごとに要した処理時間
- システムコールの回数やタイミング
- ディスクI/Oの回数や処理時間
- 自動テスト
- グラフィックス(OpenGL)のパフォーマンス
この章では Instruments の中でもよく使う、Time Profilerと Memory Usage & Leaks について紹介します
なお、Instrumentsについての詳細なリファレンスについては、以下をご覧ください
はじめに
-
導入
-
1.3 UIViewController1 UIViewController のカスタマイズ(xib, autoresizing)
-
UIKit 1 - container, rotate-
-
UIKit 2- UIView -
-
UIKit 3 - table view -
-
UIKit 4 - image and text -
-
ネットワーク処理
-
ローカルキャッシュと通知
-
Blocks, GCD
-
設計とデザインパターン
-
開発ツール
-
テスト
-
In-App Purchase
-
付録