În Xcode, GDB vă permite să modificați variabilele locale în timp ce depanare (a se vedea https://stackoverflow.com/questions/4858159/how-to-change-nsstring-value-while-debugging-in-xcode). Nu LLDB oferă o funcționalitate similară? Dacă este așa, cum o putem folosi?
expr myString = @"Foo"
(lldb) ajuta expr a Evalua un C/ObjC/C++ exprimare în curent program context, folosind variabile în prezent în domeniul de aplicare. Această comandă ia 'prime' de intrare (nu este nevoie pentru a cita chestii).
Sintaxa: expresie <cmd-opțiuni> --
Opțiuni de Comandă Utilizare: expresia [-f
] [-G ] [-d ] [-u ] -- expresia [-o] [-d ] [-u ] -- expresia -G
( --gdb-format ) Specifica un format folosind un GDB specificator de format string. -d
( --dynamic-valoarea ) Upcast valoarea care rezultă din expresia sale dinamice de tip dacă este disponibil. -f
( --format ) Specifica un format pentru a fi folosit pentru afișare. -o ( --- obiect de descriere ) Print obiectul descriere a valoarea rezultată din exprimare.
-u
( --relaxare-pe-eroare ) Curat program de stat în cazul în care expresia provoacă un accident, punct de întrerupere lovit sau de semnal. Exemple:
expr my_struct->a = my_array[3] expr -f bin -- (index * 8) + 5 expr char c[] = "foo"; c[0]
NOTĂ IMPORTANTĂ: Pentru că această comandă are 'prime' de intrare, dacă utilizați orice comanda opțiuni trebuie să utilizați ' -- ' între sfârșitul opțiuni de comandă și începutul prime de intrare.
'expr' este o abreviere pentru 'expresia'
Următoarele lucruri funcționează pentru mine. Eu sunt, folosind Xcode 8.
Dacă doriți să setați unele variabile (de exemplu, un "dict") la zero și apoi testa fluxul de cod, puteți încerca următoarele.
Acesta va arata ceva de genul in consola.
(lldb) expression dict = nil
(NSDictionary *) $5 = nil