How to change variables value while debugging with LLDB in Xcode?

XcodeDebuggingLldb

Xcode Problem Overview


In Xcode, GDB allows you to change local variables while debugging (see https://stackoverflow.com/questions/4858159/how-to-change-nsstring-value-while-debugging-in-xcode). Does LLDB offer a similar functionality? If so, how can we use it?

Xcode Solutions


Solution 1 - Xcode

expr myString = @"Foo"

> (lldb) help expr
> Evaluate a C/ObjC/C++ expression in the current > program context, using variables currently in scope. This command > takes 'raw' input (no need to quote stuff). > > Syntax: expression -- > > Command Options Usage: expression [-f ] [-G ] > [-d ] [-u ] -- expression [-o] [-d > ] [-u ] -- expression > > -G ( --gdb-format ) > Specify a format using a GDB format specifier string. > > -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. > > Examples: > > expr my_struct->a = my_array[3]
expr -f bin -- (index * 8) + 5
> expr char c[] = "foo"; c[0]

> IMPORTANT NOTE: Because this command takes 'raw' input, if you use any command options you must use ' -- ' between the end of the > command options and the beginning of the raw input. > > 'expr' is an abbreviation for 'expression'

Solution 2 - Xcode

The following stuff works for me. I am using Xcode 8.

If you want to set some variable (for example a "dict") to nil and then test the code flow, you can try the following.

  1. Put the breakpoint properly after initialised to the desired value.
  2. then execute "expression dict = nil" in lldb command line to change it. (for example "nil")
  3. Step over the break point.
  4. Check the variable "dict" in the next line. It will be nil.

It will look something like in the console.

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

Solution 3 - Xcode

If you are using Xcode 10 or 11 put the breakpoint properly after initialised to the required variable then you can change your variable using po myString = "Hello World" easily.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionEricView Question on Stackoverflow
Solution 1 - XcodeMatthias BauchView Answer on Stackoverflow
Solution 2 - Xcodearango_86View Answer on Stackoverflow
Solution 3 - XcodeatalayasaView Answer on Stackoverflow