0
1

【Xcode】Break Pointでprintデバッグする方法

Last updated at Posted at 2023-08-06

概要

開発や競技プログラミングをしている際、

  • その変数が任意のタイミングでどのような値を持っているのか
  • この関数はどのタイミングで処理されているのか
    といったことが気になる場面が多々あると思います。

そこで登場するのが print 関数です。これを使うことにより、コンソールやターミナル上に変数や文字列を表示できます。しかし、この関数にはいくつかの欠点があります。

今回は print 関数を使うことのデメリットと breakpoint を使ったスマートな方法を紹介します。

printデバッグとは

上記にも述べたとおり、我々が最も知っているデバッグ方法が print デバッグでしょう。

JavaScript なら console.log、Java や Kotlin なら println、PHP なら echo、Ruby なら puts がこれに当てはまります。

iOS の場合では print もしくは NSLog です。

これらの関数はプログラムのある時点でデータの流れや状態を追跡することで、エラーの原因や特定をするのに役立ちます。

printデバッグの長所

print デバッグの最大の長所は使いやすさです。
やり方は単純で、追跡したい場所に print を置くだけです。
このやり方は様々なプログラミング入門書で紹介されています。

printデバッグの短所

print デバッグの短所はテスト後に多くの後始末をする必要がある点です。

print デバッグは一時的なものであり、通常はバグが解消された時点で削除されます。
これを怠ると、ランタイムが遅くなる原因になります。

Xcode には Find という機能があり、そこで"print"と検索すれば探し出すことができますが、
時々、削除するのを忘れてしまい、レビュー時に指摘される場面が多々あると思います(実体験)。

これらの解決方法として、#if DEBUGを使うことで print 関数を削除する方法などがあります。

Sample.swift
    override func viewDidLoad() {
        super.viewDidLoad()
#if DEBUG
        print("Hello World")
#endif
        // 色々な処理
    }

しかし、これは不要なコードを隠しているだけで、根本的な解決にはなっていません。

処理内容のログを取得したい場合は、OSLogのようなツールを使用してください。
この記事では、一時的なバグを修正するために print 関数を使うことについて解説します。

また、print デバッグのもう 1 つの問題点は、新しい print 関数を追加したい場合、アプリを再度 build する必要があります。

Break Pointを使ったデバッグ方法

では、ここから本題の Break Point を使ったデバッグ方法について解説します。

この方法を使うと、見た目がスッキリして print デバッグの短所を克服できます。

文字列を表示する方法

Break Point を使って任意の文字列を表示させます。
方法は以下の通りです。

  1. 自分が print デバッグしたい箇所の行番号をダブルクリックする
  2. 以下の画像のように、Break Point Editor を表示される
  3. Add Actionボタンをクリックし、Log Messageを選択する。出力したい文字列を text フィールドに入力する
  4. Automatically continue after evaluating actionsをオンにする。これにより、この Break Point はデバッガが停止するのを防ぎます

これで、Break Point の行に達すると、コンソールにログメッセージが表示されます。
画像の場合だと Hello World と表示されます。

以上のように、必要なステップはとても少ないです。
そのため、print 関数のように手軽に設置することが可能だと思います。

変数を表示する

次に変数を表示する方法を解説します。
方法は以下の通りです。

  1. 自分が print デバッグしたい箇所の行番号をダブルクリックする
  2. 以下の画像のように、Break Point Editor を表示される
  3. Add Actionボタンをクリックし、Debugger Commandを選択する。出力したい任意のコマンドをテキストフィールドに入力します。po print(hoge) のように接頭辞を必ずつけてください
  4. Automatically continue after evaluating actionsをオンにする。これにより、この Break Point はデバッガが停止するのを防ぎます

これで、ブレークポイントの行に達すると、コンソールに変数が表示されます。
この場合は、101 が表示されます。

長所

以上のように、Break Point を使うことによってより多くの利点が得られます。

  • あちらこちらに print 関数がないので、後始末が不要:ブレークポイントを無効にするか、削除すればなくなります
  • 素早く動かすことができる:ドラックすることによって行を移動することが可能です
  • アプリを再度 build する必要がなくなる:Break Point を追加・編集・削除・移動する際にアプリを再度コンパイルする必要がなくなります

参考文献

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1