2012-10-02 22 views
7

xcodeで最適なデバッグ方法を知りたい。私はブレークポイントを設定する方法を知っていますが、理想的には、シミュレータを停止してコードをステップ実行したいと思っています。Xcodeでのデバッグ - コードとブレークポイントでの実行

ブレークポイントをステップ実行せず、コードを1行ずつステップ実行するので、どんな方法が実行されているかなど...

これはどうですか?底部では

答えて

23

Debug control icons in Xcode

デバッグ段階のコントロールを見ることができるのXcode 4でコードウィンドウの左側。それぞれには、それを説明する短い代替テキストがあります。ここでもう少し詳しく説明します。熟練したデバッガになることを学ぶことは、多くの教科書の主題です。

再生ボタンの代替テキスト:プログラムの実行を続行。あなたはこれを既に見つけたでしょう。押すと、次のブレークポイントに進みます。

ジャンプ矢印代替テキスト:ステップオーバー以上。このボタンを繰り返し押すと、プログラムのように現在のスコープレベルでプログラムを進めることができます。現在のメソッドを段階的に観察することができます。現在のメソッドが終了すると、ステップオーバーはプログラムスタックの1ステップ上にある呼び出しメソッドに移動します。

下向き矢印代替テキスト:ステップインにを入力します。このボタンを押すと、新しいメソッドのスコープが表示され、デバッグ用にコンパイルされている場合は、呼び出されたメソッドのコードを表示できます。たとえば、上記のデバッグウィンドウの現在のコード行でこれをクリックすると_generateSourcesメソッドが表示され、ステップオーバーで処理を進めることができます。

上向き矢印置き換えテキスト:ステップアウト。現在のコンテキストの外に出て、呼び出し元のメソッドにプログラムスタック内で1ステップアップします。これは、ステップオーバーを使用してプログラムを正常に実行し、ステップオーバーを使用してデバッグしなかった元のスコープ内のすべてのコード行を実行する方法と同じように動作します。

View of call stack

現在のコールスタックを参照するには青い背景とシルエットをクリックします。呼び出しスタックは、現在のスコープからプログラムを起動するために呼び出された最初のメソッドまで、常に進んでいきます。ここに表示されている各メソッドは、[HelloWorldLayer init]に到達するために順番に呼び出されました。 を押すとが実行され、実行中のコード行は - [CCNode node]に戻ります。ソースがあれば、それを閲覧することができます。

左側には、現在実行中のコード行(このイメージの76行目)の有効範囲から見える現在のローカル変数があります。これらの変数は、上記のコマンドを実際にステップオーバーのように実際に使用する方法です。 背景およびwinSizeは、このスコープで定義され、現在使用されているローカル変数です。スコープが終了すると、スコープは終了します。 _cmdはObjective-Cで現在呼び出されているセレクタへのポインタです: - [HelloWorldLayer init]。高度なデバッガになるまで、これは必要ありません。自己は、現在実行中のクラスHelloWorldLayerに属するすべてのivarsを含むオブジェクトへのポインタで、objc_superは、HelloWorldLayerの親クラスへのポインタです。

+0

これは私がXcodeの – Goldname

8

@Thomson Cornerの答えにキーボードショートカットを追加します。

  • 「c」を使用して続行します。 's'はステップを、 'n'は次の、 'f'は終了を表します。私はマウスでデバッガを操作するのは好きではありません。それらのアイコンはあまりにも小さく、ポインタをその上に置くことは痛みです(しばらくの間)。私はいつもキーボードの男だったし、それは本当にキーボードに慣れている。

  • また、poを試してみてください。これは、先行入力候補の変数値を出力します。 po _varNameのようになります。変数がゼロなどであるかどうかを確認しやすくする

  • ~/.lldbinitを変更してコマンドエイリアスを変更することもできます。

http://lldb.llvm.org/tutorial.htmlです。また別のチュートリアル:http://www.informit.com/articles/article.aspx?p=1829415&seqNum=6。私が上で指摘したのは、プログラマが主に実行する最も基本的なデバッグ機能です。例外ブレークポイントやローディングプログラムなどのオプションがありますが、開始するのは別の日だとはっきりと分かります。

+0

をマブラヴなぜhttps://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_help-command_shortcuts/MenuCommands/MenuCommands014.htmlが現在のXCodeのにかなり包括的なガイドは、ショートカットをサポートできますです。 –

関連する問題