Somewhere around Xcode 4.3 lldb became the default debugger. I’ve been spending some time learning how lldb differs from gdb and stumbled upon a trick to allow changing the value of a variable while in a breakpoint.
For example, in the code below I print the value of testStr, I then change its value using the expr command in lldb, I then print the value of the string again:
1 2 3 4 5 6 7
NSString *testStr = @"fubar"; NSLog(@"testStr before: %@", testStr); // Set breakpoint here, run the 'expr' shown below // Show testStr again NSLog(@"testStr after: %@", testStr);
When the breakpoint occurs, the first output is as follows (line 2):
testStr before: fubar
Next, run the following at the lldb prompt:
expr testStr = @"Foobar"
This will change the value of testStr (line 7):
testStr after: Foobar
The box highlighted in green shows how to change the value of an NSString object using the expr command in lldb.
Here is more complete list of lldb commands.