web-dev-qa-db-fra.com

Comment modifier la valeur des variables lors du débogage avec LLVM dans Xcode?

Dans Xcode, GDB vous permet de modifier les variables locales lors du débogage (voir comment modifier la valeur NSString lors du débogage dans XCode? ). Est-ce que LLDB offre une fonctionnalité similaire? Si oui, comment pouvons-nous l'utiliser?

158
Eric
expr myString = @"Foo"

(lldb) help expr
Evaluez une expression C/ObjC/C++ dans le contexte actuel du programme, en utilisant les variables actuellement dans la portée. Cette commande prend une entrée 'brute' (inutile de citer des trucs).

Syntaxe: expression -

Options de commande Utilisation: expression [-f] [-G] [-d] [-u] - expression [-o] [-d] [-u] - expression

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

Exemples:

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

REMARQUE IMPORTANTE: cette commande prenant une entrée 'brute', si vous utilisez des options de commande, vous devez utiliser un '-' entre la fin des options de la commande et le début de la saisie brute.

'expr' est une abréviation de 'expression'

252
Matthias Bauch

Les choses suivantes fonctionnent pour moi. J'utilise Xcode 8.

Si vous souhaitez définir une variable (par exemple, un "dict") sur nil, puis tester le flux de code, vous pouvez essayer ce qui suit.

  1. Placez le point d'arrêt correctement après l'initialisation à la valeur souhaitée.
  2. puis exécutez "expression dict = nil" en ligne de commande lldb pour le changer. (par exemple "nil")
  3. Passez le point de rupture.
  4. Vérifiez la variable "dict" à la ligne suivante. Ce sera nul.

Cela ressemblera à quelque chose comme dans la console.

(lldb) expression dict = nil
(NSDictionary *) $5 = nil
14
arango_86