私はiPhoneアプリに取り組んでいます。私はフルタイムのJava開発者であり、ブレークポイントを設定してプロセスを停止できるEclipseを使用することに慣れています。その後、任意の式を入力すると、Eclipseはプロセスのその時点からの値を使用して評価します。
Xcodeでそれを行う方法はありますか?ブレークポイントで停止し、それを評価するためのコードを入力したいです。 gdbコンソールでpo
( print-object )を実行できますが、実際には制限があります。何か助け?
私の練習:
po [NSUserDefaults standardUserDefaults]
表示:<NSUserDefaults:0x6143040>
po [[NSUserDefaults standardUserDefaults] stringForKey:@"Currency"]
表示:"CHF"
XCode 4.0では、これはGUIに隠されています。ブレークポイントにいるときは、おそらくデバッグ領域内に変数ビューが表示されます。ローカル変数などを表示するペインです。変数ビューを右クリックして、「式を追加...」を選択します
これは古いスレッドであることがわかっていますが、それでもGoogleのトップヒットであるため、回答する価値があると考えました。
デバッガーで「式」コマンドを使用します。使用方法は比較的簡単です。コマンド式を入力してEnterキーを押すだけです。その後、式を入力するよう求められます。ここに例があります
(lldb) expression
Enter expressions, then terminate with an empty line to evaluate:
2+2
(int) $2 = 4
また、以下に式コマンドのヘルプ情報を添付しました。お役に立てれば。
ユーザー定義変数と現在スコープ内の変数を使用して、現在のプログラムコンテキストでC/ObjC/C++式を評価します。このコマンドは「生の」入力を取ります(ものを引用する必要はありません)。
構文:expression-
コマンドオプション使用法:式[-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]
重要な注意:このコマンドは「生」の入力を受け取るため、コマンドオプションを使用する場合は、コマンドオプションの最後と生の入力の最初の間に「-」を使用する必要があります。
Xcodeについての質問には答えませんが、JetBrainsのAppCodeは、これを標準のIDE他のプラットフォームから知っている方法で行います。