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

dans Xcode, GDB vous permet de changer les variables locales pendant le débogage (voir comment changer la valeur NSString pendant le débogage dans XCode? ). La LLDB offre-t-elle une fonctionnalité similaire? Si oui, comment pouvons-nous l'utiliser?

144
demandé sur Community 2012-03-28 16:21:35

2 réponses

expr myString = @"Foo"

(lldb) aider expr

Évaluer une expression C/ObjC/C++ dans le courant le contexte du programme, en utilisant des variables actuellement dans la portée. Cette commande prend un 'raw' entrée (pas besoin de citer des trucs).

syntaxe: expression --

commande Options Usage: 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 -- (indice de * 8) + 5

expr char c[] = "toto"; c[0]

note importante: parce que cette commande prend ' raw 'input, si vous utilisez n'importe quelle option de commande vous devez utiliser' -- ' entre la fin du la commande options et le début de l'input brut.

"expr" est l'abréviation de "expression

230
répondu Matthias Bauch 2012-03-28 12:43:21

les trucs suivants marchent pour moi. J'utilise Xcode 8.

si vous voulez définir une variable (par exemple un" dict") à zéro et ensuite tester le flux de code, vous pouvez essayer ce qui suit.

  1. placez le point de rupture correctement après initialisation à la valeur désirée.
  2. puis exécute "expression dict = nil" en ligne de commande lldb pour la modifier. (par exemple "néant")
  3. enjambez le point de rupture.
  4. cochez la variable "dict" à la ligne suivante. Il sera nul.

il ressemblera à quelque chose dans la console.

(lldb) expression dict = nil
(NSDictionary *)  = nil
10
répondu arango_86 2017-01-06 09:31:08