182

Xcode では、GDB を使用してデバッグ中にローカル変数を変更できます ( XCode でデバッグ中に NSString 値を変更する方法を参照してください)。LLDB は同様の機能を提供しますか? もしそうなら、どうやってそれを使うことができますか?

4

3 に答える 3

283
expr myString = @"Foo"

(lldb) help expr
現在スコープ内にある変数を使用して、現在のプログラム コンテキストで C/ObjC/C++ 式を評価します。このコマンドは「生の」入力を取ります (引用する必要はありません)。

構文: 式 --

コマンド オプションの使用法: 式 [-f] [-G] [-d] [-u] -- 式 [-o] [-d] [-u] -- 式

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

   -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.

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

例:

expr my_struct->a = my_array[3]
expr -f bin -- (インデックス * 8) + 5
expr char c[] = "foo"; c[0]

重要な注意: このコマンドは「生の」入力を受け取るため、コマンド オプションを使用する場合は、コマンド オプションの末尾と生の入力の先頭の間に「 -- 」を使用する必要があります。

'expr' は 'expression' の省略形です

于 2012-03-28T12:43:21.893 に答える
23

次のものは私のために働きます。Xcode 8を使用しています。

一部の変数 (「dict」など) を nil に設定してからコード フローをテストする場合は、次の方法を試すことができます。

  1. 目的の値に初期化した後、ブレークポイントを適切に配置します。
  2. 次に、lldb コマンドラインで「expression dict = nil」を実行して変更します。(例: 「なし」)
  3. ブレークポイントをまたぐ。
  4. 次の行の変数「dict」を確認します。ゼロになります。

コンソールでは次のようになります。

(lldb) expression dict = nil
(NSDictionary *) $5 = nil
于 2017-01-06T09:31:08.850 に答える