本記事を1枚の画像で表すと
print デバッグ
Xcode でコーディングをしてそれをデバッグする際、例えば条件分岐をする際にどちらの分岐に入ったかを調べるために、 print(_:separator:terminator:)
を使ったりします。そしてコンソールの出力を見て、どちらの分岐に入ったかを確かめることができます。
しかし、もしコンソールに大量の出力が流れるとすれば、コンソール内で検索やフィルタをかけなければ出力を追いかけるのは困難でしょう。
Breakpoint デバッグ
また、Breakpoint を作成し、一旦動作を止めてあげることでどちらの分岐に入ったかを確かめることもできます。Breakpoint を作成する方法はいくつかあります。
- Breakpoint を作成したい箇所の行番号をクリックする
- Breakpoint を作成したい箇所にキャレット(テキストカーソル)を移動させ、
Cmd + \
(JIS キーボードの場合はCmd + Option + ¥
など)を押す - Breakpoint を作成したい箇所にキャレット(テキストカーソル)を移動させ、「Debug」>「Breakpoints」>「Create Breakpoint at Current Line」をクリックする
この方法では実行を一旦停止することとなり、様々な処理を同時に走らせている場合には、この停止を解除した後、不都合が起きる可能性も考えられます。
(一度作成した Breakpoint を削除するには、青い行番号を副ボタンクリック(右クリック)して「Delete Breakpoint」をクリックする方法や、キャレット(テキストカーソル)を移動させ、Cmd + \
(JIS キーボードの場合は Cmd + Option + ¥
など)を押すなどの方法があります。)
Breakpoint に来ても実行を自動的に続ける
Breakpoint に処理が到達しても、実行を続ける方法があります。青で示された行番号をダブルクリックすると吹き出しが出てきます。
この「Options」にある「Automatically continue after evaluating actions(アクションの評価後、自動的に続行する)」にチェックマークを入れると、その Breakpoint に到達しても実行が自動で継続します。
Breakpoint に来たら音を鳴らす
「Automatically continue after evaluating actions」するのはいいのですが、このままでは Breakpoint を作成した意味があまりありません。では、「Action」にある「Add Action」ボタンをクリックし、選択肢の中の「Sound」にチェックを入れましょう。
(GIF のため音はありません。右上の出力音量レベルを見てみてください。)すると、Breakpoint のあるコードを通過したときに、Mac から音がなるようになります。
もちろん、比較的最近の Xcode でできるようになった「Column Breakpoint」でも同じように音を鳴らすことができます。
Breakpoint に条件を指定する
これはおまけです。Breakpoint には「Condition」で条件を指定することもできます。例えば、以下のスクリーンショットの場合、Button
の action が実行されるごとに count
がインクリメントされていきますが、その count
が2の倍数のときだけ音がなるように、「Condition」に
count.isMultiple(of: 2)
// count % 2 == 0 と同じですが、こちらのほうがより「2の倍数」であることが自然言語的に読み取りやすいでしょう
が入っています。