2011-01-28 7 views
45

私はiPhoneアプリケーションで作業しています。私はフルタイムのJava開発者です。私はEclipseを使用することに慣れています。そこで、ブレークポイントを入れてプロセスを停止することができます。次に、私が望む任意の式を入力することができ、Eclipseはプロセスのその時点の値を使用して評価します。Xcodeはデバッグ中に式を評価します

Xcodeでこれを行う方法はありますか?私は、ブレークポイントで停止し、それを評価するためにいくつかのコードを入力することができるようにしたい。 gdbコンソールは私にpoprint-object)をさせてくれますが、実際には制限されています。どんな助け?

+0

「po」とは何ですか? gdbコンソールを使用すると、大量の任意の関数を評価できます。特にあなたがやろうとしているところは何ですか? –

+3

"po"は印刷オブジェクトです。 Appleのgccの拡張で、* description *メッセージがObjCインスタンスに送信され、その記述を返します。 – diciu

+0

ああ、それは私がそれを聞いたことがない理由です。楽しい。 –

答えて

40

私の練習:

po [NSUserDefaults standardUserDefaults]

表示されます。< NSUserDefaults:0x6143040>

po [[NSUserDefaults standardUserDefaults] stringForKey:@"Currency"]

表示されます。"CHF"

+3

これは実際に質問に答える唯一の答えです。 Peterは、実行がデバッガブレークポイントによって一時停止されたときにデバッグコンソールで利用可能な '(lldb)'プロンプトで 'po'コマンドを使用することを提案しています。元のポスターは彼らがすでに 'po'を使っていると指摘していますが、少なくともこれは質問に答える試みです。 –

+1

少なくともこれは答えです –

3

ありませんXcodeに関する疑問を投げかけますが、JetBrainsのAppCodeは、他のプラットフォームから私たちのほとんどが知っている標準的なIDEでこれを行います。

+0

これはXcodeに関する質問には答えませんが、別のIDE上のリードに間違いはありません。ありがとうございました。 –

14

デバッガで「式」コマンドを使用します。それを使用するのは比較的簡単です。コマンド式を入力してEnterキーを押してください。式を入力するよう求められます。ここに例があります

(lldb) expression 
Enter expressions, then terminate with an empty line to evaluate: 
2+2 

(int) $2 = 4 

以下の式コマンドのヘルプ情報も添付しました。お役に立てれば。

スコープ内に現在定義されている変数と変数 を使用して、現在のプログラムコンテキストでC/ObjC/C++式を評価します。このコマンドは の '生の'入力を受け取ります(物を引用する必要はありません)。

構文:式 -

コマンドオプション使用法: 表現[-f] [-G] [-a] [-d] [-t] [-u] - 表現[-o ] [-a] [-d] [-t] [-u] - 発現

-G <gdb-format> (--gdb-format <gdb-format>) 
     Specify a format using a GDB format specifier string. 

    -a <boolean> (--all-threads <boolean>) 
     Should we run all threads if the execution doesn't complete on one 
     thread. 

    -d <boolean> (--dynamic-value <boolean>) 
     Upcast the value resulting from the expression to its dynamic type 
     if available. 

    -f <format> (--format <format>) 
     Specify a format to be used for display. 

    -o (--object-description) 
     Print the object description of the value resulting from the 
     expression. 

    -t <unsigned-integer> (--timeout <unsigned-integer>) 
     Timeout value for running the expression. 

    -u <boolean> (--unwind-on-error <boolean>) 
     Clean up program state if the expression causes a crash, breakpoint 
     hit or signal. 

タイムアウト: 式(コードを走っずに)静的に評価することができる場合、それはなります。 それ以外の場合、デフォルトでは、式は現在のスレッドで短時間のタイムアウトで実行されます。 現在は.25秒です。その時間に戻ってこない場合、評価は中断されて となり、すべてのスレッドが実行された状態で再開されます。すべての スレッドで-aオプションを使用して再試行を無効にすることができます。 -tオプションを使用すると、より短いタイムアウトを設定できます。

ユーザー定義変数: 便宜のために、または後続の式で使用するために、独自の変数を定義することができます。 Cで変数を定義するのと同じ方法で定義します。 の最初の文字が$の場合、変数の値は将来の 式で使用可能になります。そうでない場合は、現在の式で使用可能になります。

例:

expr my_struct->a = my_array[3] 
    expr -f bin -- (index * 8) + 5 
    expr unsigned int $foo = 5 
    expr char c[] = "foo"; c[0] 

重要な注意:このコマンドは、「生の」入力がかかるので、あなたがどんな コマンドオプションを使用する場合は、使用する必要があります「 - 」コマンドオプション の終わりと始まりの間生の入力の

63

XCode 4.0では、これはGUIで非表示になっています。ブレークポイントにいるときは、おそらくデバッグ領域内の変数ビューを見ることができます。ローカル変数などを示すペインです。変数ビューを右クリックし、[式を追加...]を選択します。

これは古いスレッドだとわかりましたが、それでもGoogleのトップヒットになりました。

+0

これは現在、関連する回答です。ありがとう –

+0

ニース!このオプションはとても深く隠されているとは信じられません –

+2

これ以上の投票が必要です! –