メインコンテンツに移動

プログラムのデバッグ

プログラムの試験再生

XCodeでプログラムを作成した場合, デバッガを利用して,効率的なデバッグを行うことができます.

・・・てゆうか,てきとーにクリックしてたら,どうすれば良いかわかると思うんだけど.使い方,調べた経験がないんで・・・マニュアル読むより,クリックするほうが手っ取り早いと思うぞ,普通は

プログラムを再生

  1. プログラムをどのように再生するか,をXCodeでは「スキーム」と呼びます.これは,左上のプロジェクト名をクリックして【New Scheme】から作成することができます.
    1. ふつうのプログラムでは,どのプロジェクトを再生するか,を選択するだけで十分です. 
  2. スキームを選んで再生ボタンを押すと,対象のプロジェクトがコンパイルし再生されます.
  3. 複数のスキームを用意すれば,同時に複数のプログラムを実行できます.複数のプログラムが通信を行いながら作業する場合もデバッグできます.
    • 複数のスキームを用意したら,再生ボタンを押したときに,どれを実行するつもりなのか尋ねられます.
  4. 停止する場合は停止ボタンを押します.
    • 複数のプログラムを実行している場合,どれを止めるのかメニューが出ます.
  5. プログラムを実行する時,引数が必要になる場合があります.これは, 【Edit Scheme】で【Argument】を編集します: 

とりあえず動かない場合

再生ボタンを押すと,とりあえずエラーすることが多いです.

上の赤色あたりを見て,たとえ英語であろうが何語であろうが,ちゃんと読んで理解する.Google翻訳やchat-GPTに投げれば即座に解説してもらえる.最近よくあるのが

この Cycle insideうねうね.これは

この【Product】【Clean Build Folder】で解決!

Undefined.... とか言うのは,ライブラリーが足りない:

とりあえず動く場合

一瞬動くが,途中でエラーするところまで来たとしよう.

デバッグ(エラーの分析)

  1. プログラムが正常動作すれば,その様子(入出力ターミナル)が右下の方に表示されます.
    • 複数起動したときは,左の方で該当するプログラムを選んだときの入出力ターミナルが,右下に出る 
      出ない奴は,これを探せ 
  2. エラーが発生すると,プログラムのどこでエラーしたか,が赤字で表示されます.
  3. エラーしたプログラムは停止してしまいますが,そのとき,各変数がどんな値となっていたかは,左下に表示されます.

デバッグ(一時停止)

どうもこの辺がおかしいんだが,変数の中を確認しながら実行したいというときには,ブレークポイントを設定します.プログラムの左の方をクリックすると,青く設定されます:

で,再生すると,ブレークポイントまで進んで一時停止するので,変数の中身を確認したりできるわけよ.

とまってますねー.

で,クリックしてちょいちょい進めるわけですわ.進めていくと,まあ,バグってるわけですから変数の値が奇妙になったりするわけですね.

それは,さっきの変数の表のところで値をクリックして正しい値に設定し直したりして,先がうまくいくかテストとかできる.

もちろん,実行中に新しくブレークポイントを設定して,「ここまでは行けるのでは」とかも可能,

もう少し正確に言うと,ブレークポイントで停止したのち

  • Step Over 1行進む.メソッドを呼び出したりしていたら,メソッドを読んで返ってくる.
  • Step In 1行進む.メソッドを呼び出したりしていたら,そのメソッドの中に入る
  • Step Out メソッドから出るまで進む

で,この変数の値,まずいわ〜,ということになったら,変数で右クリックして【Edit Value】して直してしまいましょう.

右側の【画面出力】で(lldb)というのは,ブレークポイントで止まりました.お前のコマンド突っ込んでいいよ.という意味です.入れていいって言われたら,普通は入れますよね:

 

ここでなにを入れているのか,というと

  • print 変数名,と入力すると,値が表示されます.
  • po 変数名 = 値 と入力すると,値を変更できます.
    • 右の図では,pointerに値を入れております.ちゃんと*をつけないとね
  • いろいろコマンドがあります.help とかもありますよ.

重要なコマンドをまとめておきましょう.

  • p(rint) 単純な変数                       単純な変数の数値を表示します.
  • fr(ame) v(ariable) 複雑な変数      std::vector とか複雑な変数の数値を表示します
  • po

 

 

バグの原因探し

バグは,正常なプログラムになにか手を加える時に発生します.そこで,バグの原因を調べるには過去の履歴が重要です. あなたがGITを利用しているのならこれは簡単です.

過去の履歴を確認します:

さらに,過去の任意の時点で行われた変更を確認することができます:

完成〜

完成したら,ターミナルで実行したくなりますよね.これは【Edit Schemes】で【Release】を選択し, 【Product】【Build】

成功したら,ファイルの一覧の【Products】に実行ファイルが出現する.ターミナルで開くには,【Show in Finder】

するとFinderに出てくる.

ターミナルを開くには,【Release】フォルダーをターミナルのアイコンにポイすると手っ取り早いよ.