Comment changer 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 NSSsortingng lors du débogage dans XCode? ). LLDB offre-t-il une fonctionnalité similaire? Si oui, comment pouvons-nous l’utiliser?

expr mySsortingng = @"Foo" 

(lldb) aide expr
Évaluez une expression C / ObjC / C ++ dans le contexte du programme en cours, en utilisant les variables actuellement dans la scope. Cette commande prend une entrée ‘brute’ (pas besoin de citer des choses).

Syntaxe: expression –

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

  -G  ( --gdb-format  ) Specify a format using a GDB format specifier ssortingng. -d  ( --dynamic-value  ) Upcast the value resulting from the expression to its dynamic type if available. -f  ( --format  ) Specify a format to be used for display. -o ( --object-description ) Print the object description of the value resulting from the expression. -u  ( --unwind-on-error  ) 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 [] = “foo”; c [0]

REMARQUE IMPORTANTE: comme cette commande prend une entrée ‘brute’, si vous utilisez des options de commande, vous devez utiliser ‘-‘ entre la fin des options de commande et le début de l’entrée brute.

‘expr’ est une abréviation de ‘expression’

Les trucs suivants fonctionnent pour moi. J’utilise Xcode 8.

Si vous souhaitez définir une variable (par exemple un “dict”) pour la mettre à zéro puis tester le stream de code, vous pouvez essayer les solutions suivantes.

  1. Placez le point d’arrêt correctement après l’initialisation à la valeur souhaitée.
  2. puis exécutez “expression dict = nil” dans la ligne de commande lldb pour le modifier. (par exemple “néant”)
  3. Passez par-dessus le sharepoint rupture.
  4. Vérifiez la variable “dict” dans la ligne suivante. Ce sera nul.

Cela ressemblera à quelque chose dans la console.

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